[BUG] Whisker clogs up DependentsFields; Object flushDependents brutally slow

Brian Keefer mgomes21 at cox.net
Wed May 15 20:47:00 UTC 2002


By brutally slow, I mean flushDependents takes over a minute. My image
gradually came to this level of sloth, I only noticed the growing delay in
save&|quit(which do explicit GC with flushDependents). DependentsFields
contains 4600 instances of
ClassInHierarchyWrapper, which I guess is eating most of my cycles.
According to Object's comment, heavy users of dependents should inherit
from Model, and carry their own deps list. Would reparenting
ListItemWrapper to Modal be the right fix? 

If I nuke the deps, things become bearable again. 
DependentsFields become: (DependentsFields reject:
	[:a|a first class=IndentingListItemMorph])


The attachments are made of:
MessageTally spyOn:[Object flushDependents] 
	toFileNamed:'flushDependents-spy.txt'.
foo_Bag new.
DependentsFields keysAndValuesDo:
	[:a :b|foo add: a class.].
foo explore "save to jpeg"

Q: What, exactly, is The Force? A: a plot device 
- Magic 8 ball, Geek edition
-------------- next part --------------
 - 4058 tallies, 69788 msec.

**Tree**
100.0% {69788ms} Object class>>flushDependents
  95.9% {66927ms} ClassCategorySectionWrapper(Object)>>removeDependent:
    |48.3% {33708ms} TitledPane(Object)>>dependents
    |  |48.3% {33708ms} TitledPane(Object)>>myDependents
    |  |  48.3% {33708ms} WeakIdentityKeyDictionary(Dictionary)>>at:ifAbsent:
    |  |    48.3% {33708ms} WeakIdentityKeyDictionary(Set)>>findElementOrNil:
    |  |      48.3% {33708ms} WeakIdentityKeyDictionary>>scanFor:
    |  |        37.7% {26310ms} WeakKeyAssociation>>key
    |  |        10.6% {7398ms} primitives
    |47.3% {33010ms} MethodCategoryWrapper(Object)>>myDependents:
    |  47.3% {33010ms} WeakIdentityKeyDictionary(WeakKeyDictionary)>>at:put:
    |    47.3% {33010ms} WeakIdentityKeyDictionary(Set)>>findElementOrNil:
    |      47.3% {33010ms} WeakIdentityKeyDictionary>>scanFor:
    |        41.4% {28892ms} WeakKeyAssociation>>key
    |        5.8% {4048ms} primitives
  4.1% {2861ms} WeakIdentityKeyDictionary(WeakKeyDictionary)>>finalizeValues
    4.0% {2792ms} WeakIdentityKeyDictionary(WeakKeyDictionary)>>rehash
      4.0% {2792ms} WeakIdentityKeyDictionary>>scanForNil:

**Leaves**
79.1% {55202ms} WeakKeyAssociation>>key
16.4% {11445ms} WeakIdentityKeyDictionary>>scanFor:
4.0% {2792ms} WeakIdentityKeyDictionary>>scanForNil:

**Memory**
	old			+126,536 bytes
	young		+61,900 bytes
	used		+188,436 bytes
	free		-188,436 bytes

**GCs**
	full			0 totalling 0ms (0.0% uptime)
	incr		73 totalling 122ms (0.0% uptime), avg 2.0ms
	tenures		4 (avg 18 GCs/tenure)
	root table	0 overflows


-------------- next part --------------
A non-text attachment was scrubbed...
Name: Explorer.jpeg
Type: image/jpeg
Size: 35988 bytes
Desc: not available
Url : http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20020515/42b2c422/Explorer.jpeg


More information about the Squeak-dev mailing list