Hi,
when I use MassageTally>>spyOn: on the creation of a Dictionary,
results have not the same details according to the size of Dictionary.
For example:
===
|n|
MessageTally spyOn:[
n := Dictionary new.
1 to: 400000 do:[:each | n at: each put:each].
]
===
returns this results:
====
- 1745 tallies, 1751 msec.
**Tree**
--------------------------------
Process: (40s) 1964: nil
--------------------------------
45.8% {802ms} Dictionary(Set)>>atNewIndex:put:
|43.6% {763ms} Dictionary(Set)>>fullCheck
| |39.4% {690ms} Dictionary(Set)>>grow
| | |27.2% {476ms} Dictionary>>noCheckAdd:
| | | |25.2% {441ms} Dictionary(Set)>>findElementOrNil:
| | | | |23.6% {413ms} Dictionary>>scanFor:
| | | | |1.6% {28ms} primitives
| | | |2.0% {35ms} primitives
| | |9.2% {161ms} primitives
| | |3.0% {53ms} Array(SequenceableCollection)>>do:
| |2.4% {42ms} primitives
| |1.8% {32ms} SmallInteger(Magnitude)>>max:
|2.2% {39ms} primitives
22.4% {392ms} Association class>>key:value:
|18.9% {331ms} Association class(LookupKey class)>>key:
| |16.3% {285ms} Association(LookupKey)>>key:
| |2.6% {46ms} primitives
|1.9% {33ms} Association>>value:
|1.6% {28ms} primitives
4.4% {77ms} Dictionary(Set)>>findElementOrNil:
|2.3% {40ms} primitives
|2.1% {37ms} Dictionary>>scanFor:
1.9% {33ms} primitives
====
But, if I do:
===
|n|
MessageTally spyOn:[
n := Dictionary new.
1 to: 4000000 do:[:each | n at: each put:each].
]
===
results are:
====
- 179772 tallies, 180312 msec.
**Tree**
--------------------------------
Process: (40s) 1964: nil
--------------------------------
3.1% {5590ms} Dictionary(Set)>>atNewIndex:put:
|2.8% {5049ms} Dictionary(Set)>>fullCheck
| 2.3% {4147ms} Dictionary(Set)>>grow
| 1.3% {2344ms} Dictionary>>noCheckAdd:
1.0% {1803ms} Association class>>key:value:
====
Where are the rest of the process ?
Does anybody understand this behavior ? can you explain ?
Cheers,
Jannik
_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project