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