From Adrian Lang's email to wikitech-l http://www.gossamer-threads.com/lists/wiki/wikitech/452196:
I recently investigated a performance issue with one of Wikibase's
test cases. The test in question performed a formatting task for all
known languages. While the first assertions ran as fast as expected,
they rapidly got slower until finally taking seconds per assertion. I
figured this was an actual performance bug (although hardly triggered
in production) and started profiling.
My findings, in short:
- The shims for $wgExtensionMessagesFiles as generated by maintenance/generateJsonI18n.php register a handler for the hook LocalisationCacheRecache when included
- For every new language loaded, all $wgExtensionMessagesFiles are included by LocalisationCache::recache
- Afterwards, LocalisationCache::recache runs the hook LocalisationCacheRecache
This leads to the obvious issue that there is a growing number of registered handlers, which slows down the hook, which slows down the test.
The shims should be fixed to avoid this.