1

実行中のプログラムの 2 つのステップ間の時間(最短単位である可能性があります)を計算する方法は何ですか?

例えば ​​:

algo() {
  long time_1 = time_X
  .
  .
  .
  long time_2 = time_Y

  difference = time_2 - time_1;
}

を使って計算していますnew GregorianCalendar().getTimeInMillis()。しかし、私が得る違いは0.

アルゴリズムのいくつかのステップの違いを知る方法はありますか? ここで、アルゴリズムの最初のステップと最後のステップの違いを知りたいです。アルゴリズムが最終的なリターンを行う直前。

4

4 に答える 4

10

ミリ秒の場合は、System.currentTimeMillis()代わりに: を使用します:

long time_1 = System.currentTimeMillis();
.
.
.
 long time_2 = System.currentTimeMillis();

と減算します。ナノ秒の精度を得るには、 を使用しますnanoTimenanoTime内部タイマー以外のシステムクロックには関係がないため、100 ns の場合、120 から 220、100020 から 100120 などになる可能性があります。

于 2013-09-17T19:17:07.790 に答える
1

単純。

long time_1 = System.currentTimeMillis();
...
long time_2 = System.currentTimeMillis();
difference = time_1 - time_2;
System.out.println( difference + "milliseconds" );

関数にかかった時間を評価するのに非常に便利です。また、時間を秒単位で取得する場合は、差を 1000 で割ります。

于 2013-09-17T19:22:46.263 に答える
0

System.nanoTime()はSystem.currentTimeMillis()よりも正確です。

これは、必要なときに計算時間に使用するものです。

詳細については、Java API の公式ドキュメントを参照してください。総括する :

利点:

  • 時間 (ナノ秒)
  • ミリ秒単位でかなり正確

欠点:

  • 単一の JVM ランタイム内で真の意味を持つ (2 つの異なる JRE または同じ JRE の 2 つの別個の呼び出しの間で nanoTimes を比較しないでください)
于 2013-09-17T19:46:18.130 に答える