durationToRun

4 messages Options
Embed this post
Permalink
Frédéric Ferrère-2

durationToRun

Reply Threaded More More options
Print post
Permalink
Some javascript/style in this post has been disabled (why?)
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
stephane ducasse

Re: durationToRun

Reply Threaded More More options
Print post
Permalink
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
Stéphane Rollandin-2

Re: durationToRun

Reply Threaded More More options
Print post
Permalink
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
Stéphane Rollandin-2

Re: durationToRun

Reply Threaded More More options
Print post
Permalink
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