Doru,

You were right we should add performance tests … so we ran some. And the only thing that has a significant speedup is the monticello import. We probably need to rewrite this not to use "entityNamed:" …

Importing whitestar (Delphi project using the Delphi importer) gives some interesting results:
Old version: ca. 12 min. 50
New version: ca. 12 min.
stripped version: ca. 10 min. 50.
That is: CPU-time pharo needed for loading + displaying the Moose model.

I guess that the new version improved performance comes from initializing the byName at the size of capacity instead of 10.000.

So, the question is now:
- should I commit this stripped version, where the byName is gone entirely and the elements are only calculated on demand.
(after I make the performance tweak to the Monticello Importer)
- should I revert the mooseName change (I guess I best leave out the privateState entirely to avoid confusion, since the old never caches anyway).

In the mean time I am running some more tests.

Cheers,
Diego

On Sep 25, 2013, at 12:05 PM, Diego Lont wrote:
- mooseName is now cached. This can have an impact if you rely on your model to be more dynamic. If you have a custom entity that can receive sub-entities at runtime, you might want to resetMooseName. For example, if you modify the scope of a FAMIXType, the mooseName has to be reset:

FAMIXType>>container: aContainerEntity
container := FMMultivalueLink on: self
update: #types
from: self container
to: aContainerEntity.
self resetMooseName

This is supposed to be an optimization, but it makes the code more complicated. To see if it is actually worth it, we should benchmark the impact.

@Diego, @Stephan: Did you do some benchmarking on this?