Profiling gives possible improvements:
- Analysers should always have at least two thread even if single cpu, because one thread maybe spending much time waiting on I/O either due to remote web lookup or db communication or communicatung with filesystem.
- AcousticBrainz lookup per song quite expensive (3000 per call) because can only lookup one song a time, and there is quite a lot of data to keep, and we dont cache acousticbrainz data
- Query By Release Id (8000 per call) slow, also consider impact of delayQuery()
- Scorer.scoreMatrix significant because of the large number of calls it makes to caculateTrackScoreWithiRelease() , can we skip some checks
- Even Amg.scoreMatrix() is slow for same reason
- AcoustidMatcher proceses files serially, so if you are processing single folder (esp random folder) and have multiple cpus takes longer to perform this step than needs to be.
- If we can create discId and get lookup then acoustid may not be necessary