I assume the // and \\ involved in converting millis to seconds were
found too slow (see comment for similiar method nanoseconds:, which does
it), therefore it's assumed milliseconds: is always called with value
0<value<1000.
However, changing to a version that "auto-translates" to seconds:
milliSeconds: milliCount
^ self basicNew seconds: (milliCount // 1000) nanoSeconds:
(milliCount \\ 1000) * NanosInMillisecond
(there was no MillisInSecond, I didn't bother adding just for this)
and running some tests against old version:
Time millisecondsToRun: [10000 to: 1000000 do: [:ms | dur := Duration
milliSeconds: ms]]] 305
Time millisecondsToRun: [10000 to: 1000000 do: [:ms | durr := Duration
milliSecondsOld: ms]] 1683
with float values:
Time millisecondsToRun: [10000.0 to: 1000000.0 do: [:ms | dur :=
Duration milliSeconds: ms]]] 1944 2058 2151
Time millisecondsToRun: [10000.0 to: 1000000.0 do: [:ms | durr :=
Duration milliSecondsOld: ms]] 5396 5458 5171
For the small, valid, values though:
Time millisecondsToRun: [5000 timesRepeat: [1 to: 999 do: [:ix | durr :=
Duration milliSeconds: ix]]] 1620 1628 1483 1747 1722
Time millisecondsToRun: [5000 timesRepeat: [1 to: 999 do: [:ix | durr :=
Duration milliSecondsOld: ix]]] 1549 1670 1525 1498 1651
So I guess it does make *some* sense, just puts rather strict limits on
the input accepted.
Cheers,
Henry
Henrik Johansen skrev:
> Besides, durationToRun has a bug when durationTime is bigger than 1s,
> calling Duration milliSeconds: durationTime .
> (Or Duration milliSeconds: has a bug, depending on your point of view)
> Ex:
> (In Squeak)
> Duration milliSeconds: 7666 prints as: 0:00:00:00.7666
> (In Pharo)
> Duration milliSeconds: 7666 prints as: 0:00:00:07.7666
>
> In both cases, A Duration with 0 seconds, and 7666000000 nanoseconds is
> created.
>
> Cheers,
> Henry
>
> Stéphane Ducasse skrev:
>
>> on mac
>>
>> 0:00:00:00.409
>>
>> On Jun 12, 2009, at 11:43 AM, Gary Chambers wrote:
>>
>>
>>
>>> Depends if the preference for "higher performance" is enabled too...
>>>
>>> For comparison (Windows VM, updated 10304cl image):
>>>
>>> "higher performance" off: 0:00:00:06.6087
>>> "higher performance" on: 0:00:00:00.524
>>>
>>> Regards, Gary
>>>
>>> ----- Original Message -----
>>> From: "Stéphane Ducasse" <[email protected]>
>>> To: "Pharo Development" <[email protected]>
>>> Sent: Friday, June 12, 2009 7:12 AM
>>> Subject: [Pharo-project] Animation bench
>>>
>>>
>>> Hi guys
>>>
>>> could you run the following:
>>>
>>>
>>>
>>>>> [
>>>>> (m := Morph new) openInWorld.
>>>>> 1 to: 300 do: [:i |
>>>>> m position: m position + (1...@1).
>>>>> World doOneCycle]
>>>>> ]
>>>>> durationToRun
>>>>>
>>>>>
>>> because [email protected] did it and here are the result
>>>
>>> * vm : pharo-vm-0.15.1b-linux
>>> * image : pharo0.1-10332dev09.06.2
>>> - Test 1 : Project est vide, juste le workspace ouvert à l'opposé du
>>> trajet
>>> Résultat 0:00:00:07.704
>>> - Test 2 : ClassBrowser recouvrant tout le 'World'
>>> Résultat : 0:00:00:00.689
>>>
>>> - Test 1
>>> * vm : squeak3.9.8-3ubuntu3
>>> * image : Squeak-dev 3.10.2
>>> - Test 1 : Project est vide, juste le workspace ouvert à l'opposé du
>>> trajet
>>> Résultat : 0:00:00:02.098
>>> - Test 2 : ClassBrowser recouvrant tout le 'World'
>>> Résultat : 0:00:00:00.608
>>> Donc contrairement à ce qu'il semblait être logique,
>>> le morph avance plus vite si le "World" n'est pas vide.
>>>
>>> Stéphane Rollandin a écrit :
>>>
>>>
>>>> [
>>>> (m := Morph new) openInWorld.
>>>> 1 to: 300 do: [:i |
>>>> m position: m position + (1...@1).
>>>> World doOneCycle]
>>>> ]
>>>> durationToRun
>>>>
>>>> retourne 0:00:00:00.373 dans mon image, soit un gros tiers de
>>>> seconde. on est loin des 6 s
>>>>
>>>>
>>> _______________________________________________
>>> 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
>>>
>>>
>>>
>> _______________________________________________
>> 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
>
>
>
_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project