I had some time, added some code for time measurement and created a huge collection of abc-files to test the speed. Total size: ~6.5 GB
I ran my tool twice, since the tool saves the results to speed-up future runs
First run all files are unknown for my tool
==============================================
Needed time for 90180 songs for 7 profiles
Initialization : 01:686 seconds
Scan for Profiles : < 70 milliseconds
Scan for Songs : 02:25 minutes
Writing files : 08:426 seconds
Total : 02:35 minutes
Average per song 1.73 milliseconds
This run created a file around 4.7 MB in size which stored all data needed for second run. Only by looking at the difference of reading 6.5 GB to 4.7 MB you can expect that the next run should be faster:
Second run all files are unchanged compared to first run
================================================
Needed time for 90180 songs for 7 profiles
Initialization : 01:645 seconds
Scan for Profiles : < 70 milliseconds
Scan for Songs : 08:123 seconds
Writing files : 08:689 seconds
Total : 18:473 seconds
Average per song 0.20 milliseconds
In my eyes the result speaks for itself ...