Si j'ai un Time
objet provenant de:
Time.now
et plus tard j'instancie un autre objet avec cette même ligne, comment puis-je voir combien de millisecondes se sont écoulées? Le deuxième objet peut être créé à la même minute, au cours des prochaines minutes ou même des heures.
finish.to_f - start.to_f
?finish - start
donne une virgule flottante;.to_f
serait redondant.(t2 - t1).in_milliseconds
Vous pouvez ajouter un peu de sucre de syntaxe à la solution ci-dessus avec ce qui suit:
la source
Je pense que la réponse est mal choisie, cette méthode donne des secondes, pas des millisecondes.
Ici, je suppose que la valeur flottante correspond aux millisecondes
la source
Time.now
consiste à traiter le temps comme des valeurs à virgule flottante avec des secondes avant le point décimal et jusqu'à nanosecondes après le point décimal (bien que nsec puisse ne pas être complètement précis). Donc, multiplier cette valeur par1000.0
donne des millisecondes.Pour obtenir le temps en millisecondes, il vaut mieux ajouter
.round(3)
, donc ce sera plus précis dans certains cas:la source
La réponse d'ezpz est presque parfaite, mais j'espère pouvoir en ajouter un peu plus.
Geo a demandé le temps en millisecondes; cela ressemble à une quantité entière, et je ne ferais pas le détour par la terre en virgule flottante. Ainsi mon approche serait:
La multiplication par un entier 1000 préserve parfaitement le nombre fractionnaire et peut être un peu plus rapide aussi.
Si vous traitez avec des dates et des heures, vous devrez peut-être utiliser la classe DateTime . Cela fonctionne de la même manière mais le facteur de conversion est 24 * 3600 * 1000 = 86400000 .
J'ai trouvé les fonctions strptime et strftime de DateTime inestimables dans l'analyse et le formatage des chaînes de date / heure (par exemple vers / depuis les journaux). Ce qu'il est utile de savoir, c'est:
Les caractères de formatage pour ces fonctions (% H,% M,% S, ...) sont presque les mêmes que pour les fonctions C trouvées sur n'importe quel système Unix / Linux; et
Il y en a quelques autres: en particulier, % L fait des millisecondes!
la source
unknown
:)Exemple d'utilisation:
la source
Time.now.to_f peut vous aider mais il renvoie des secondes.
En général, lorsque je travaille avec des benchmarks, je:
C'est un processus très simple, donc je ne suis pas sûr que vous ayez vraiment posé cette question ...
la source
%L
donne des millisecondes en rubisou
vous donnera l'horodatage actuel en millisecondes.
la source
La réponse est quelque chose comme:
Cependant, l'
Time.now
approche risque d'être inexacte. J'ai trouvé ce post de Luca Guidi:https://blog.dnsimple.com/2018/03/elapsed-time-with-ruby-the-right-way/
Donc, il est recommandé d'utiliser à la
Process.clock_gettime
place. Quelque chose comme:Exemple:
la source
Essayez de soustraire le premier Time.now du second. Ainsi:
Cela vous donne un nombre à virgule flottante des secondes entre les deux heures (et avec cela, les millisecondes).
la source