This splits VectorizedScorer into MixtureValueScorer + MixtureDataScorer, and creates in each model two typedefs: FastMixture and SmallMixture. Both mixture types use a fast custom .score_data(...) method, but only FastMixture has uses caching in its score_value method.
This also moves towards @cap 's suggested pattern of splitting complicated objects into pieces: MixtureSlave is now composed of MixtureSlaveGroups + MixtureSlaveValueScorer + MixtureSlaveDataScorer.
Practically, this speeds up loom kind inference by 15-30%.
This splits
VectorizedScorer
intoMixtureValueScorer
+MixtureDataScorer
, and creates in each model two typedefs:FastMixture
andSmallMixture
. Both mixture types use a fast custom.score_data(...)
method, but onlyFastMixture
has uses caching in itsscore_value
method.This also moves towards @cap 's suggested pattern of splitting complicated objects into pieces:
MixtureSlave
is now composed ofMixtureSlaveGroups
+MixtureSlaveValueScorer
+MixtureSlaveDataScorer
.Practically, this speeds up loom kind inference by 15-30%.