Mark VandenBrink 12 лет назад
Родитель
Сommit
c0c6507a8f
1 измененных файлов с 24 добавлено и 3 удалено
  1. 24 3
      README.md

+ 24 - 3
README.md

@@ -189,7 +189,28 @@ For my 21,000+ files, this generates 218,788,792 lines in "log.txt" and 240,727
 * __taglib.asd:__ Contains build instructions for taglib library.  An ASDF file.
 * __utils.lisp:__ General utility functions/methods needed by this library.
 
-
-
-
+## Known gotchas
+
+* In previous versions of this library, if we ran into a Xing header with the number of frames is zero, I just set the duration
+  as 0.  This was fast, but not really "nice."  In new revs, I decided if I hit a bad Xing header, the correct thing to do is to
+  read every frame and calculate the duration/avg bit-rate that way.  My calculations match those of iTunes, but it can __really__ slow
+  things down.
+* More info later...
+
+## Experimental Stuff
+
+I've recently added some (very) rudimentary multi-threading (see taglib-tests.lisp) using the CHANL package.  First, the filesystem
+walker (main thread) walks the requested directory, adding each filename to an unbounded channel (*channel*).  The main thread then sends
+*MAX-THREADS* *END-THREAD* symbols, creates *MAX-THREADS* worker threads who read from the channel, and then sits in a loop reading
+from *dead-channel* until it has done *MAX-THREADS* recv's.
+
+The worker threads parse the filename they retrieve from *channel* until they get the *END-THREAD* symbol, whereupon they write their thread 
+id to *dead-channel* and return (ie exit). Here are some timings:
+
+| # Threads   | Time (seconds) |
+| ----------- | -------------- |
+|          10 |            ~28 |
+|           5 |            ~18 |
+|           2 |            ~17 |
+|           1 |            ~25 |