Hmm, well, that only moves the goal posts to ~320K. I just ran a bigger test in 3.9. Not only are the numbers comparable at the beginning of the test with a small IdentitySet, they only degrade to 10X slower at 1M elements.
The trunk IdentitySet seems to have much more rapid degradation... On Wed, Mar 17, 2010 at 9:40 PM, Henrik Sperre Johansen <[email protected]> wrote: > On 18.03.2010 02:08, Chris Muller wrote: >> >> Thank you very much for the links. Ok, so if you take Lukas' test >> code from the first link, and try it in trunk. Here it is, but >> tweaked for an IdentitySet and increased to simulate a modestly-sized >> real-world use-case, 250K elements: >> >> | test ord | >> test := IdentitySet new. >> [ test size>= 250000 ] whileFalse: [ >> ord := OrderedCollection new: 100. >> 1000 timesRepeat: [ >> test add: ( ord add: Object new ) ]. >> Transcript >> show: test size asString; >> tab. >> Transcript show: >> [ >> 10 timesRepeat: [ >> ord do: [ :each | test includes: each ] ] >> ] timeToRun asString. >> Transcript cr ] >> >> 3.9 can run this entire thing and be done with it in under one minute. >> In trunk, all looks pretty fine until 136K elements, at which point >> it completely seizes up; worse by a factor of> 120X. >> >> - Chris > > Simplistic fix: > - remove 282311 from HashedCollection class>>goodPrimes. > > The table should probably be remade for squeak, keeping in mind the > scaledIdentityHash implementation. > > Cheers, > Henry > > _______________________________________________ > Pharo-project mailing list > [email protected] > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project > _______________________________________________ Pharo-project mailing list [email protected] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
