maybe I am wrong, I test again with emacs28 gccemacs branch, and find that:
1. master
Totel 1261 files, speed is 1308.8998360985452 files per second.
2. info-native
Totel 1261 files, speed is 899.9466389450938 files per second.
both are fast enough :-)
在 2021-02-19 08:52:44,"tumashu" <tumashu@163.com> 写道:
>(let* ((n 1)
> (bm (benchmark-run
> (dolist (filename (map-keys emms-cache-db))
> (setq n (+ n 1))
> (condition-case nil
> (emms-info-native--decode-info-fields filename)
> (error (message "Error while processing %s" filename)))))))
> (message "Totel %s files, speed is %s files per second." n (/ n (car bm))))
>
>I use emacs 28 gccemacs branch.
>
>1. master speed
>
>Error while processing /home/feng/音乐/未整理/Jambalaya (On The Bayou).mp3
>Error while processing /home/feng/音乐/未整理/Mean.mp3
>Error while processing /home/feng/音乐/李玉刚/逐梦令 四美图/月光.mp3
>Totel 1261 files, speed is 405.9625992748337 files per second.
>
>2. info-native speed
>
>Error while processing /home/feng/音乐/未整理/Jambalaya (On The Bayou).mp3
>Error while processing /home/feng/音乐/未整理/Mean.mp3
>Error while processing /home/feng/音乐/李玉刚/逐梦令 四美图/月光.mp3
>Totel 1261 files, speed is 808.5052910067327 files per second.
>
>
>by the way, is it possible add a function, which can read a problem mp3 file, and
>generate a small test mp3 file?
>
>
>
>
>
>
>
>
>At 2021-02-19 05:46:35, "Petteri Hintsanen" <petterih@iki.fi> wrote:
>>(apologies it you get this message twice, my mailer is complaining for
>>some reason)
>>
>>Yoni Rabkin <yoni@rabkins.net> writes:
>>
>>> Petteri, what do you think of the dynamic-scaling idea?
>>
>>It could help but I think it’s not the best way to go forward. I am
>>afraid it is the design itself that is failing here.
>>
>>Namely, the current implementation reads in the whole tag (which can be
>>big, as we’ve seen) before parsing, even though we are not interested in
>>most of it. At the end, we need only a few, relatively small textual
>>frames (album, artist, etc.) from the complete tag.
>>
>>I hacked together an "incremental" parser that goes through the tag one
>>frame at a time, and skips over those that EMMS does not care about.
>>Hopefully it saves memory and, who knows, it may also give some
>>performance boost. (I didn’t have time to do any benchmarking.) Due to
>>id3v2 peculiarities, the code is quite ugly and regressions are likely.
>>
>>But please test if it gives any better results. Code is in info-native
>>branch.
>>
>>Thank you all for your feedback.
>>
>>Regards,
>>Petteri