The way we are set up right now, the error values need to be recalculated on
every item in the whole locale, if any element changes in that locale or any
element changes in a locale that that locale depends on (inherited or aliased).
(Or if the voting algorithm changes, or the CVS data is uploaded.)
The error values could be kept in a cache, but that cache needs to get flushed
with any change.
There is a possible optimization: for any path P, the CheckCLDR routine could
figure out which other paths OPs depend on P. So that would allows us to only
recalculate the OPs when P changes value. For example, almost everything depends
on the exemplar set for computing error values, but only other language names
depend on a lanugage name for computed error values (for collisions). This could
limit the recalculation substantially.
I think we could do it by having an API on each subclass, something like:
getPathsAffectedBy(String path, Set<String> affectedByThisPath);
We would then walk through all the subclasses, like we do now for the tests, and
each subclass would add to the affectedByThisPath parameter according to the
whatever dependencies that subclass has for testing.