2

Java プログラムを実行する時間コストを測定する方法は? プログラムの時間コストを見積もる方法。(プログラムはEclipseで実行されています)

コード:

import java.util.Scanner;

public class S1_4 {

public static void main(String[] args) {
    int i,j,k=1;
    int[] table = new int[1000001];
    for(i = 2;i<1000000;i++)
     {
      if(table[i]==0)
         {
         for(j=1;i*j<999999;j++)
            table[i*j]=k;
            k++;
         }
     }

    int a;
    Scanner cin = new Scanner(System.in);

    while(cin.hasNext()) {
        a = cin.nextInt();          
        System.out.println(table[a]);
    }
    cin.close();
}

}
4

3 に答える 3

6

System.nanoTime()System.currentTimeMillis() の代わりに使用しnanoTime()ます。currentTimeMillis() はシステム クロックに依存しますが、システム クロックに依存せずに相対時間を返すためです。

currentTimeMillis() の 2 回の呼び出しの間にシステム クロックが変更された場合、時間間隔は意味がありません。

long start = System.nanoTime();
    //time consuming code here.
    //...
    long end = System.nanoTime();
    long used = end-start;
    System.out.println("used:"+TimeUnit.NANOSECONDS.toMillis(used)+" ms");

詳しくはこちらをご覧ください。

于 2013-04-15T06:12:24.793 に答える
1
public static void main(String[] args) {
  long startTime = System.currentTimeMillis();
  ...
  System.out.println("Time taken-"+(System.currentTimeMillis() -startTime));
}
于 2013-04-15T06:09:29.897 に答える
0

メソッドの実行時間が非常に短い場合、メソッドの実行にかかる時間を測定するのは困難です。ナノカウンターは十分に安定していません。メソッドを何度も実行し、合計実行時間を測定することをお勧めします。これにより、JIT コンパイラーがそれを最適化できるようになるため、実行時に実際にどれだけかかるかがわかります。

jmeter やその他のパフォーマンス テスト フレームワークを使用するか、独自のループを記述してコードを何度も実行できます。他の 2 つの回答は、コードにかかる時間を測定する方法を示しています。1 回だけ実行するのではなく、多数回 (たとえば 10k) 実行して時間を測定することをお勧めします。

于 2013-04-15T06:26:58.707 に答える