2017-09-13 18 views
0

Java 8のLocalTimeとInstantを使用してカウンタを実装しようとしましたが、どちらもうまくいきますが、出力が少し混乱します!今まで私がインスタントを使用したとき、私は同じループの値が小さくなったのですか?何か案が?Java 8でカウンタを実装する最も良い方法は何ですか?

// using Instant 
Instant before=Instant.now(); 
// something time consuming 
for(int i=1;i<100000000;i++); 
Instant after=Instant.now(); 
Duration duration=Duration.between(before, after); 
System.out.println(duration.toMillis()); 


// using LocalTime 
LocalTime xBefore=LocalTime.now(); 
for(int i=1;i<100000000;i++); 
LocalTime yAfter=LocalTime.now(); 
System.out.println(ChronoUnit.MILLIS.between(xBefore, yAfter)); 
+0

Holgerに言及してくれてありがとう! –

+1

*経過時間*と現実世界(「ウォールクロック」)時間には、システムクロックがNTP修正などの影響を受ける可能性があるため、大きな違いがあります。 *経過時間*を測定する場合は、['System.nanoTime()'](https://docs.oracle.com/javase/8/docs/api/java/lang/System.html#nanoTime- - )を計算し、差を計算します。しかし、JVMのオプティマイザが処理を実行するにつれて、実行時間が短くなるのは正常です。リンクされたQ&Aでもっと読むことができます... – Holger

答えて

0

私が正しくあなたを理解していれば、あなたはさまざまな方法で(何もしないもの)ループのための時間にしたいです。

forループが完全に最適化されているため、使用時間が短縮される可能性があります。

関連する問題