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 <henrik.s.johansen@veloxit.no> 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 Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project