Call for help [was: [Re: [ENH] BehaviorHashEnh]]

Stephan Rudlof sr at evolgo.de
Fri Oct 1 23:22:42 UTC 2004


PS: My Squeak3.8alpha#6285 stems from upgrading a Squeak3.6 image: could
this be the reason for the hassle? Is there a difference between an
actual image and upgrading a 3.6 one?

Stephan Rudlof wrote:
> Stef,
> 
> I'm trying to think freshly, since this is very weird: I have measured
> with a fresh 3.8alpha...
> 
> My results for the IdentitySet variant have been *much* worser than
> yours, with or without the cs (which is expected, since the behavior of
> IdentitySet won't be affected by the cs).
> For this reason, the idea of the cs has been to introduce Behavior>>hash
> - using String>>hash - to avoid the default Object>>hash which itself
> calls ProtoObject>>identityHash. This is also the reason, why the
> IdentitySet variant remains worse for my system (it just continues to
> use >>identityHash).
> But the cs doesn't seem to have a relevant effect in your system,
> because *your* >>identityHash seems to work much better than mine!
> 
> Now the question: why?
> 
> ProtoObject>>identityHash calls a prim: which VM are you using?
> 
> It would be nice, if some other person would doIt the following
> expression and post the result together with the VM version (squeak
> -version) and processor version to get some more data.
> 
> 
> DoIt
> ----
> 
> | allClasses allClassesSet block |
> 	allClasses := Smalltalk allClasses.
> 	block _ [allClassesSet _ allClasses asIdentitySet.
> 			[allClasses do: [:class | allClassesSet remove: class]] timeToRun].
> 	{block value. block value. block value}.
> 
> 
> For me the result is
> 
>   #(3112 3166 3108)
> 
> for
> 
> sr at karl:~/DepS/Tmp$ squeak -version
> 3.7b-5 #1 Mon Jun 14 18:05:35 CEST 2004 gcc 3.3.3
> Squeak3.7beta of '1 April 2004' [latest update: #5954]
> Linux karl 2.4.26sr #1 Sun May 23 19:28:24 CEST 2004 i686 GNU/Linux
> default plugin location: /usr/local/lib/squeak/3.7b-5/*.so
> 
> at a 366MHz Pentium.
> 
> Any additional ideas for the huge difference between mine and Stefs
> results are also welcome.
> 
> 
> Greetings
> Stephan
> 
> stéphane ducasse wrote:
> 
>>| allClasses allClassesSet block |
>>	allClasses := Smalltalk allClasses.
>>	block _ [allClassesSet _ allClasses asSet.
>>			[allClasses do: [:class | allClassesSet remove: class]] timeToRun].
>>	{block value. block value. block value}
>>
>>one before
>>	#(27 27 25)
>>one after
>>	#(31 35 32)
>>
>>| allClasses allClassesSet block |
>>	allClasses := Smalltalk allClasses.
>>	block _ [allClassesSet _ allClasses asIdentitySet.
>>			[allClasses do: [:class | allClassesSet remove: class]] timeToRun].
>>	{block value. block value. block value}.
>>
>>two before
>>	#(19 19 19)
>>two after
>>	 #(37 19 22)
>>
>>
>>I hope this helps. This was with 6273
>>
>>Stef
>>
>>
> 
> 

-- 
Stephan Rudlof (sr at evolgo.de)
   "Genius doesn't work on an assembly line basis.
    You can't simply say, 'Today I will be brilliant.'"
    -- Kirk, "The Ultimate Computer", stardate 4731.3



More information about the Squeak-dev mailing list