Wenn ich ein Time
Objekt habe von:
Time.now
und später instanziiere ich ein anderes Objekt mit derselben Zeile. Wie kann ich sehen, wie viele Millisekunden vergangen sind? Das zweite Objekt kann in derselben Minute, in den nächsten Minuten oder sogar Stunden erstellt werden.
finish.to_f - start.to_f
?finish - start
ergibt Gleitkomma;.to_f
wäre überflüssig.(t2 - t1).in_milliseconds
Sie können der obigen Lösung ein wenig Syntaxzucker wie folgt hinzufügen:
quelle
Ich denke, die Antwort ist falsch gewählt, diese Methode gibt Sekunden, nicht Millisekunden.
Hier nehme ich an, dass der Gleitkommawert die Millisekunden sind
quelle
Time.now
wird die Zeit als Gleitkommawert mit Sekunden vor dem Dezimalpunkt und bis zu Nanosekunden nach dem Dezimalpunkt behandelt (obwohl ns möglicherweise nicht vollständig genau sind). Multiplizieren Sie diesen Wert mit1000.0
Milisekunden.Um Zeit in Millisekunden zu erhalten, ist es besser, sie hinzuzufügen
.round(3)
, damit sie in einigen Fällen genauer ist:quelle
Die Antwort von ezpz ist fast perfekt, aber ich hoffe, ich kann noch ein bisschen mehr hinzufügen.
Geo fragte nach der Zeit in Millisekunden; Das klingt nach einer ganzzahligen Menge, und ich würde den Umweg durch Gleitkomma-Land nicht machen. Mein Ansatz wäre also:
Das Multiplizieren mit einer ganzen Zahl 1000 bewahrt die Bruchzahl perfekt und kann auch etwas schneller sein.
Wenn Sie mit Datum und Uhrzeit arbeiten , müssen Sie möglicherweise die DateTime- Klasse verwenden. Dies funktioniert ähnlich, aber der Umrechnungsfaktor beträgt 24 * 3600 * 1000 = 86400000 .
Ich habe festgestellt, dass die strptime- und strftime- Funktionen von DateTime beim Parsen und Formatieren von Datums- / Zeitzeichenfolgen (z. B. zu / von Protokollen) von unschätzbarem Wert sind. Was sich als nützlich erweist, ist:
Die Formatierungszeichen für diese Funktionen (% H,% M,% S, ...) sind fast dieselben wie für die C-Funktionen, die auf einem Unix / Linux-System vorhanden sind. und
Es gibt noch ein paar mehr: Insbesondere % L macht Millisekunden!
quelle
unknown
:)Anwendungsbeispiel:
quelle
Time.now.to_f kann Ihnen helfen, gibt aber Sekunden zurück.
Wenn ich mit Benchmarks arbeite, gilt Folgendes:
Es ist ein sehr einfacher Prozess, daher bin ich mir nicht sicher, ob Sie das wirklich gefragt haben ...
quelle
%L
gibt Millisekunden in Rubinoder
gibt Ihnen den aktuellen Zeitstempel in Millisekunden.
quelle
Die Antwort ist so etwas wie:
Die
Time.now
Ansatz kann jedoch ungenau sein. Ich habe diesen Beitrag von Luca Guidi gefunden:https://blog.dnsimple.com/2018/03/elapsed-time-with-ruby-the-right-way/
Es wird daher empfohlen,
Process.clock_gettime
stattdessen zu verwenden . Etwas wie:Beispiel:
quelle
Versuchen Sie, das erste Time.now vom zweiten zu subtrahieren. Wie so:
Dies gibt Ihnen eine Gleitkommazahl der Sekunden zwischen den beiden Zeiten (und damit den Millisekunden).
quelle