Time millisecondsToRun: [| view | view := MOViewRenderer new. view nodes: (1 to: 50) forEach: [:each | view nodes: (1 to: 10) forEach: [:ea | view nodes: (1 to: ea * each). view gridLayout]. view gridLayout]. view open]
=> 18955 in Pharo => 23566 in VW
:-)
And I am sure there are rooms for improvement (IdentityDictionary are used with a small number of elements, a lot of OrderedCollection are used, ...)
Alexandre