On huge schema modifications, mostly happen due to creation of a new collection, the same observer instance of an ResourceLoaderAware component is added again and again.
This leads to a runtime behaviour of n²/2 where n is is the number of schema operation multiplied by ResourceLoaderAware components instead of the number of containing ResourceLoaderAware components.
E.g. If you have 1000 schema operations and 2 ResourceLoaderAware components this leads to 500000 operations instead of 2000.
Even worse the corresponding resource is registered again and again, which can take some time e.g. ManagedSynonymGraphFilterFactory needs about 5s on each call (depending on the size of synonyms).