durationToRun

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

durationToRun

Frédéric Ferrère-2
Bonsoir,

avec tous les tests que j'ai pu faire concernant
les vitesse de déplacements des morphs,
la méthode durationToRun m' a renvoyé des résultats un peu surprenant.

La place de la virgule entre les secondes et les millisecondes
n'est pas toujours correcte.
Pour vérifier cela j'ai "encadré" mon block d'exécution
avec : Transcript show: Time now;cr.

Test 1 :
0:00:00:00.1788
7:47:13 pm
7:47:15 pm
ici le résultat devrait plutôt être 0:00:00:01.788

Test 2 : moins d'une seconde
0:00:00:00.439
7:47:38 pm
7:47:38 pm

Test 3 :
0:00:00:05.5272
8:07:43 pm
8:07:49 pm

Test 4 :
 0:00:00:00.3167
8:05:43 pm
8:05:46 pm
ici le résultat devrait plutôt être 0:00:00:03.167

Ce comportement survient avec les configs suivante :
- Système d'exploitation : Ubuntu 9.04
 * vm : pharo-vm-0.15.1b-linux
 * image : pharo0.1-10332dev09.06.2

 * vm : squeak3.9.8-3ubuntu3
 * image : Squeak-dev 3.10.2

Code utilisé :
[
Transcript show: Time now;cr.
   (m := Morph new) openInWorld.
   1 to: 300 do: [:i |
    m position: m position + (1@1).
    World doOneCycle].
Transcript show: Time now;cr.
]
durationToRun.

Un bug ?

Cordialement,
--
Frédéric


_______________________________________________
Squeak-fr mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr
Reply | Threaded
Open this post in threaded view
|

Re: durationToRun

stephane ducasse
voir la mailing-list pharo.
Ce comportement a ete mentione mais je n'ai pas percute assez pour te  
donner une reponse claire.

On Jun 14, 2009, at 8:12 PM, Frédéric Ferrère wrote:

> Bonsoir,
>
> avec tous les tests que j'ai pu faire concernant
> les vitesse de déplacements des morphs,
> la méthode durationToRun m' a renvoyé des résultats un peu surprenant.
>
> La place de la virgule entre les secondes et les millisecondes
> n'est pas toujours correcte.
> Pour vérifier cela j'ai "encadré" mon block d'exécution
> avec : Transcript show: Time now;cr.
>
> Test 1 :
> 0:00:00:00.1788
> 7:47:13 pm
> 7:47:15 pm
> ici le résultat devrait plutôt être 0:00:00:01.788
>
> Test 2 : moins d'une seconde
> 0:00:00:00.439
> 7:47:38 pm
> 7:47:38 pm
>
> Test 3 :
> 0:00:00:05.5272
> 8:07:43 pm
> 8:07:49 pm
>
> Test 4 :
>  0:00:00:00.3167
> 8:05:43 pm
> 8:05:46 pm
> ici le résultat devrait plutôt être 0:00:00:03.167
>
> Ce comportement survient avec les configs suivante :
> - Système d'exploitation : Ubuntu 9.04
>  * vm : pharo-vm-0.15.1b-linux
>  * image : pharo0.1-10332dev09.06.2
>
>  * vm : squeak3.9.8-3ubuntu3
>  * image : Squeak-dev 3.10.2
>
> Code utilisé :
> [
> Transcript show: Time now;cr.
>    (m := Morph new) openInWorld.
>    1 to: 300 do: [:i |
>     m position: m position + (1@1).
>     World doOneCycle].
> Transcript show: Time now;cr.
> ]
> durationToRun.
>
> Un bug ?
>
> Cordialement,
> --
> Frédéric
>
> _______________________________________________
> Squeak-fr mailing list
> [hidden email]
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr

_______________________________________________
Squeak-fr mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr
Reply | Threaded
Open this post in threaded view
|

Re: durationToRun

Stéphane Rollandin-2
In reply to this post by Frédéric Ferrère-2
tout ce que je peux dire, c'est que j'utilise durationToRun dans le
calcul du moment d'émission des messages MIDI dans mon programme de
composition musicale, et que le résultat est très, très précis. 80% du
MIDI est envoyé au moment correct à 1 ms près. l'image utilisée est un
Squeak3.8

Stef

_______________________________________________
Squeak-fr mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr
Reply | Threaded
Open this post in threaded view
|

Re: durationToRun

Stéphane Rollandin-2
In reply to this post by Frédéric Ferrère-2
[3500 milliSeconds asDelay wait] durationToRun

donne 0:00:00:00.3501 sur Squeak3.10.2, mais donne le format correct
0:00:00:03.5 sur Squeak3.8.2.

le problème vient de

Duration class>>
days: days hours: hours minutes: minutes seconds: seconds nanoSeconds:
nanos

  ^ self seconds: ((days * SecondsInDay)
        + (hours * SecondsInHour)
        + (minutes * SecondsInMinute)
        + seconds)
                nanoSeconds: nanos


... qui est faux, car les nanoseconds ne participent pas au calcul des
seconds.

la version précédente est:

days: days hours: hours minutes: minutes seconds: seconds nanoSeconds: nanos

  ^ self nanoSeconds:
        ( ( (days * SecondsInDay)
        + (hours * SecondsInHour)
        + (minutes * SecondsInMinute)
        + seconds ) * NanosInSecond )
        + nanos.


et là ça marche.

Stef


_______________________________________________
Squeak-fr mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr