Community
Participate
Working Groups
The CacheAdapter is calling eResource() unnecessarily in the following instances: In notifyChanged(Notification), when the notifier is an EObject, the CacheAdapter always calls clear(Resource) for the notifier's eResource(). This is not necessary when the notification is a "touch", for example, a REMOVING_ADAPTER notification. In unsetTarget(EObject), the CacheAdapter will also call clear(Resource) for the target's eResource(). This is unnecessary when the resource is in the process of unloading, because the object is already detached, and unloading the resource will clear the entire cache, anyway (not just the resource's portion of it). This is also just a repeat of what notifyChanged() did already in response to REMOVING_ADAPTER (see above). In profiling the unloading of a large UML model (160 MB on disk), addressing these two instances of the problem reduced the time required to unload the model from 38 seconds to 34, a savings of more than 10%.
Created attachment 51975 [details] A patch that addresses the unnecessary eResource() calls
The fix has been committed to CVS.
The fix is available in build M200611162216.
Move to verified as per bug 206558.