Die Messung der Zeit Unterschiede, die mit System.currentTimeMillis()
Ich habe ein einfaches java-Programm, und ich möchte wissen, die Zeit-Differenz zwischen einem Satz von Operationen. Für diese Frage, die details sind nicht wichtig, aber nehmen wir das folgende Szenario.
long beginTime = System.currentTimeMillis();
//Some operations. Let us asssume some database operations etc. which are time consuming.
//
long endTime = System.currentTimeMillis();
long difference = endTime - beginTime;
Wenn der code auf einer Maschine, wie zuverlässig wird der Unterschied sein?
Lassen Sie uns sagen, dass der Prozessor beginnt die Ausführung einiger Anweisungen aus meinem code, dann gibt der Kontext zu einem anderen Prozess, die ausgeführt wird, für einige Zeit, und dann kommt zurück zum ausführen von Anweisungen im Zusammenhang mit diesem java-Prozess.
Also, die Zeit Unterschied sich in Abhängigkeit vom aktuellen Zustand der Maschine, d.h. wie viele Prozesse ausgeführt werden etc? Also, im profiling-Zeit, die für einige Operationen ausgeführt werden, ist dieser Mechanismus nicht zuverlässig?
- Die Durchführung der operation 3-4 mal und Mittelwertbildung aus den Ergebnissen sollte Ihnen eine faire Schätzung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Granularität der
System.currentTimeMillis()
hängt von der Implementierung und auf das Betriebssystem und ist in der Regel rund 10 ms.Stattdessen die
System.nanoTime()
gibt den aktuellen Wert der genauesten system-Zeitgeber, der in Nanosekunden. Beachten Sie, dass Sie können Sie nur verwenden, um zu berechnen die verstrichene Zeit, die Sie nicht verwenden können, seinen Wert als eine absolute Zeit.Beispiel:
Ich denke, dein code wird einwandfrei als gleiche in mehreren Projekten verwendet. Ich glaube nicht, dass, wenn Ihr code ruft einer anderen Datenbank, Prozess, etc, dann hat es keine Auswirkungen auf Ihre Zeit. Es sollte aber funktionieren, auch in diesem Fall.
Ex.
Nun dieser Unterschied wird Gesamtzeit, die für die wichtigsten Prozess, einschließlich der Zeit, die von einem anderen Prozess. Das timing ist in Bezug auf die Maschine der wichtigsten Prozess - & das ist in Ordnung.