如何衡量运行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();
}
}
答案 0 :(得分:5)
使用System.nanoTime()
代替System.currentTimeMillis(),因为currentTimeMillis()取决于系统时钟,但nanoTime()
返回相关时间,而不是取决于系统时钟。
如果你的系统时钟在currentTimeMillis()的两次调用之间发生了变化,则时间间隔是没有意义的。
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");
有关详细信息,请参阅here。
答案 1 :(得分:1)
public static void main(String[] args) {
long startTime = System.currentTimeMillis();
...
System.out.println("Time taken-"+(System.currentTimeMillis() -startTime));
}
答案 2 :(得分:0)
您可以使用jmeter或其他perf测试框架,也可以编写自己的循环来多次执行代码。另外两个答案为您提供了如何衡量代码所需时间的指南。我建议你测量大量跑步的时间(例如10k)而不是一次跑步。