[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Help-smalltalk] faster sets project
From: |
Ralph Boland |
Subject: |
Re: [Help-smalltalk] faster sets project |
Date: |
Thu, 16 Jul 2009 17:17:24 -0600 |
2009/7/14 Paolo Bonzini <address@hidden>:
>> 2) In GNU Smalltalk Sets already work this way so there is no need
>> for FasterSets.
>
> It's this. :-)
>
> Paolo
>
I downloaded GNU Smalltalk and checked (which I should have done in
the beginning) and determined that in fact GNU Smalltalk Sets and
subclasses (and also Dictionary and its subclasses) do NOT
avoid element compares during a grow operation!
Thus set and dictionary adds of elements not already in the collection
can be improved to do on average 14% fewer compares.
So can I get a response on which of the remaining scenario's proposed
is considered the best.
Regards,
Ralph Boland
>> I recently released a project called FasterSets into the Squeak repository
>> and
>> am trying to get it incorporated into the Squeak (and Pharo) base image.
>> Pharo looks like a go; Squeak seems to move a little slower.
>> Meanwhile, my long term plan is to get FasterSets incorporated into all
>> versions
>> of Smaltalk that I can, including of course, GNU Smalltalk; hence this
>> posting.
>> The Idea behind FasterSets is to not do any element compares during a Set
>> (or any of its subclasses) grow operation; since during a grow operation
>> we know all the elements being added to the set are not already there and
>> so no compares are needed. In Squeak this modification results in a
>> reduction
>> in the average number of element compares during an add: operation of
>> around 14% (min 7% max 21%).
Note that in Squeak Dictionary is a subclass of Set so this improvement
applies to Dictionary and its subclasses as well!
>> I see 4 scenarios:
>> 1) GNU Smalltalk does not want FasterSets. FasterSets affects low level
>> methods in class Set and its subclasses and can break user classes that
>> are subclasses of Set and which override these same low level methods.
>> (In Pharo FasterSets was tested against a number of packages including
>> Seaside without problems.)
>> 2) In GNU Smalltalk Sets already work this way so there is no need
>> for FasterSets.
HA!
>> 3) FasterSets is a great idea. But we want a GNU Smalltalk guru to
>> implement
>> this idea from scratch. It is a simple idea after all. Thanks
>> for the idea though.
>> 4) FasterSets is a great idea. The originator (me) will create a
>> project in GNU
>> Smalltalk containing the code. Note that the version of FasterSets
>> to be incorporated into Squeak/Pharo will be under the MIT license but
>> the
>> version for GNU Smalltalk will be under the GNU license.
>> As the creator of the software I can create different licenses
>> for different versions. I will need to sign the GNU Smalltalk release
>> form.
>> Since I have
>> never used GNU Smalltalk some help with testing project releases will be
>> helpful. Someone else will do the final integration into GNU Smalltalk
>> once the project is released.
>> This will be a great way for me to become familiar with GNU Smalltalk.
>> I look forward to feedback.
>> Ralph Boland