Loops in Smalltalk

Kenneth Johnsen kennethjohnsen at mail.dk
Sun Jun 27 17:33:10 UTC 2004


Colin Putney wrote:

>
> On Jun 27, 2004, at 11:49 AM, Kenneth Johnsen wrote:
>
>> I read an article about the new version of Dataflex, where it said 
>> that the time it took to do 5000 get/set operations had been reduced 
>> from 58 to 3 seconds.
>>
>> I read it like: set and get an instance variable on an object 5000 
>> times, but I presume that something more advanced is going on 
>> (otherwise, it's not that impressive).
>>
>> But this got me wondering: how long does it take in Smalltalk?
>>
>> So, I made a small class, with one instance variable: instancevar, 
>> and three methods: instancevar, instancevar: and runTest. The two 
>> former just gets/sets instancevar, and runTest does:
>>
>> runTest
>>    | anInt |
>>    ^ Time
>>        millisecondsToRun: [1
>>                to: 5000
>>                do: [:z |
>>                    self instancevar: z.
>>                    anInt := self instancevar.
>>                    Transcript show: anInt printString;
>>                         cr]]
>>
>> Now, I didn't have the "Transcript show" in it the first time I ran it.
>>
>> Squeak printed: 1
>> Dolphin printed: 1
>>
>> Question 1: Very nice. But am I missing something, where the compiler 
>> figures out that my instancevar is not used for anything else, and 
>> ignores it?
>
>
> Nah, it's just that Smalltalk can do 5000 get/sets in less than a 
> millisecond. On your machine, anyway. Mine takes 3 milliseconds for 
> this test. Try 50,000 iterations.
>
> Colin
>
>
>
>
>
>
50000 takes 14 ms in Squeak. So something is going on anyways.
Btw. VisualWorks does 50000 in 1 ms, and 500000 in 9 ms :-)


Regards,
Kenneth.



More information about the Squeak-dev mailing list