|
@@ -30,6 +30,28 @@ Notes II:
|
|
|
called *get-audio-info* that controls whether parse-mp4-file/parse-mp3-file try to extract this info. To speed things up,
|
|
called *get-audio-info* that controls whether parse-mp4-file/parse-mp3-file try to extract this info. To speed things up,
|
|
|
you can bind this this parameter to nil (eg: (let ((audio-streams:*get-audio-info* nil)) (parse-...)). As an example, when we're
|
|
you can bind this this parameter to nil (eg: (let ((audio-streams:*get-audio-info* nil)) (parse-...)). As an example, when we're
|
|
|
not getting audio-info, parsing an MP3 takes microsends. When we are, it takes seconds.
|
|
not getting audio-info, parsing an MP3 takes microsends. When we are, it takes seconds.
|
|
|
|
|
+
|
|
|
|
|
+```
|
|
|
|
|
+TAGLIB-TESTS> (time (dotimes (i 10) (mp3-test1)))
|
|
|
|
|
+(DOTIMES (I 10) (MP3-TEST1))
|
|
|
|
|
+took 1,640,067 microseconds (1.640067 seconds) to run.
|
|
|
|
|
+ 15,628 microseconds (0.015628 seconds, 0.95%) of which was spent in GC.
|
|
|
|
|
+During that period, and with 4 available CPU cores,
|
|
|
|
|
+ 1,636,000 microseconds (1.636000 seconds) were spent in user mode
|
|
|
|
|
+ 8,000 microseconds (0.008000 seconds) were spent in system mode
|
|
|
|
|
+ 121,941,600 bytes of memory allocated.
|
|
|
|
|
+ 1 minor page faults, 0 major page faults, 0 swaps.
|
|
|
|
|
+NIL
|
|
|
|
|
+TAGLIB-TESTS> (let ((audio-streams:*get-audio-info* nil)) (time (dotimes (i 10) (mp3-test1))))
|
|
|
|
|
+(DOTIMES (I 10) (MP3-TEST1))
|
|
|
|
|
+took 11,195 microseconds (0.011195 seconds) to run.
|
|
|
|
|
+During that period, and with 4 available CPU cores,
|
|
|
|
|
+ 8,000 microseconds (0.008000 seconds) were spent in user mode
|
|
|
|
|
+ 0 microseconds (0.000000 seconds) were spent in system mode
|
|
|
|
|
+ 575,520 bytes of memory allocated.
|
|
|
|
|
+NIL
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
* For now, USE-MMAP in *features* is purely experimental. Seems pretty flakey, but that's probably because I'm using ccl:: methods without
|
|
* For now, USE-MMAP in *features* is purely experimental. Seems pretty flakey, but that's probably because I'm using ccl:: methods without
|
|
|
much regard to sanity...
|
|
much regard to sanity...
|
|
|
|
|
|