Some collection protocols were optimized so your result makes sense. The current performance bottleneck for your application definitely comes from the use of isKindOf: based on your profiles. inheritsFrom: is called by isKindOf: I guess. Now be very careful the current GC has very strange side effect. Did you perform manually a full GC before each bench ? 2014-06-08 20:18 GMT+02:00 Hilaire Fernandes <hilaire.fernandes@gmail.com>:
I have run a Sketch script on DRGeo on Pharo 1.4 and 3.0 The script involved a lot of collection operations and object comparison.
The leaves results are strange, because the script is the same:
On Pharo 1.4:
**Leaves** 14.2% {97ms} Array class(Behavior)>>inheritsFrom: 11.4% {77ms} OrderedCollection(SequenceableCollection)>>hasEqualElements: 9.7% {66ms} DrGPointIntersectionItem>>= 9.6% {65ms} DrGPointIntersectionItem(DrGMathItem)>>parentsEqual: 5.0% {34ms} OrderedCollection>>at: 5.0% {34ms} Array(SequenceableCollection)>>first 4.7% {32ms} DrGPointFreeItem(DrGMathItem)>>= 3.5% {24ms} OrderedCollection(SequenceableCollection)>>= 2.7% {18ms} Array(Object)>>isKindOf: 2.4% {16ms} OrderedCollection>>do: 2.4% {16ms} OrderedCollection>>size 1.8% {12ms} OrderedCollection(SequenceableCollection)>>indexOf:startingAt:ifAbsent: 1.2% {8ms} OrderedCollection>>ensureBoundsFrom:to: 1.2% {8ms} SmallInteger(Number)>>negative
On Pharo3:
**Leaves** 15.8% {168ms} Array class(Behavior)>>inheritsFrom: 11.4% {121ms} DrGCircle2ptsItem(DrGMathItem)>>= 8.3% {88ms} OrderedCollection>>size 8.3% {88ms} DrGCircle2ptsItem(DrGMathItem)>>parentsEqual: 7.5% {80ms} OrderedCollection>>at: 7.1% {76ms} OrderedCollection(SequenceableCollection)>>= 6.6% {70ms} Array(SequenceableCollection)>>first 6.0% {63ms} DrGPointIntersectionItem>>= 5.6% {59ms} OrderedCollection(SequenceableCollection)>>hasEqualElements: 1.9% {20ms} OrderedCollection>>do: 1.9% {20ms} OrderedCollection>>ensureBoundsFrom:to: 1.7% {18ms} OrderedCollection(Object)>>isKindOf: 1.5% {16ms} OrderedCollection(SequenceableCollection)>>indexOf:startingAt:ifAbsent: 1.5% {16ms} SmallInteger(Number)>>negative
True in between DrGeo changes a bit but normally not in the part involved:
-- Dr. Geo http://drgeo.eu iStoa - https://launchpad.net/istoa