I have been working on a new profiler for Pharo. And I would like the moose importer to be a case study for it. But really, I need more time for this. Now, I am fixing bugs in Mondrian and adding features Jannik asked for. Johan is now putting pressure on me to get popupView: working.
Cheers, Alexandre
On 1 Dec 2009, at 12:17, Simon Denier wrote:
Hi there
I'm trying to assess bottlenecks in the Moose importer. I think there are some hidden scalability issues especially in the InstallElementsOperator and the CandidateListOperator. Now I cant run a profiler on that because the image crashes before the end, so I just randomly pick some interruption from time to time (especially when I dont have feedback by a progress bar).
Some suspect code:
InstallElementsOperator >>basicRun model entityStorage forSetup. self container do: [:each | model add: each. self increment]. model entityStorage forRuntime <------- here: converting to a runtime storage takes a long time
CandidateListOperator >>setUp
"dont call 'model allMethods' here because it sorts the group and we dont care at this level" groups := ((model allWithType: FAMIXMethod) reject: #isAbstract) groupedBy: #signature <----- groupedBy: create a dictionary with all method signatures, I suspect it becomes inefficient on large models
Any taker/suggestion on this?
Also I think it would be good to launch the importer in a separate/ background thread, with the possibility to cancel it.
What we can do basically (for example): [MooseScripts createModelForPharo] forkAt: 20 (give it a low priority to not starve other process, esp. UI) and we can still interrupt the process in
Now if someone knowledgeable in Morphic can come with an enhanced progress bar with a cancel button, which would terminate the import process when clicked.
-- Simon
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev