I tried svn-1301 and got bad performance, too. So, it doesn’t look like it’s your Unicode translation. I guess that’s both good and bad… 8)
I had to go back to svn-1236 to get good initial scan performance. 20301 songs in 161 seconds (while the system is basically idle beyond Firefly and, at this point, with a very healthy system cache.) I also re-installed svn-1206, and it finished in 160 seconds, too.
A full scan under svn-1249, with the box doing nothing else, completed in 1188 seconds. So, it looks like a big performance impact was introduced after svn-1236… and a tiny bit more in later builds. Well, at least with Win32 on a SMP box. 😯 I guess I never noticed due to other issues and limiting my full scan rebuilds. My re-test of svn-1333 under similar conditions resulted in a 1498 second full scan.
While svn-1249 or up is doing the long initial scan, a single CPU is pegged at 100% most of the time and I/O seems minimal. (The songs.db file seems to jump to 9MB fairly quickly… and then growth slows down significantly. Not sure if that’s normal. The final size ends up around 32MB.)
Other related business: Can you add a “Rescanning database complete” message (or some statistic) to the Firefly log once it finishes a rescan. All I ever see in the log is “Rescanning database” at minimal debug levels, without a clue when it actually finishes. (I have no idea how long rescans take…)