我听说 System.out.println();
Java 语句是昂贵的(它消耗了很多时间)
所以我试着评估一下它的成本:
当我评估 5 个语句时...成本 = 1.0
所以我预计 1 条语句的成本 = 0.2
但实际上我发现 The cost = 0.0
!!
double t1 = 0;
double t2 = 0;
t1 = System.currentTimeMillis();
System.out.println("aa");
System.out.println("aa");
System.out.println("aa");
System.out.println("aa");
System.out.println("aa");
t2 = System.currentTimeMillis();
System.out.println("The cost = " + (t2-t1) );
// The cost = 1.0
t1 = System.currentTimeMillis();
System.out.println("aa");
t2 = System.currentTimeMillis();
System.out.println("The cost = " + (t2-t1) );
// The cost = 0.0
// Expected : 1.0/5 = 0.2 -- But Actual : 0.0
为什么?
最佳答案
System#currentTimeMillis
返回 long
而不是 double
。因此,您丢失了 .2
。
测试 5 个语句不是一个好主意,特别是当您几乎感觉不到执行它所花费的时间时。我建议您测试 5 个以上的语句,然后将数量减少到 1 个以上。
想要精确测量时间,最好使用System#nanoTime
,因为它以纳秒给出时间:
long startTime = System.nanoTime();
// ... the code being measured ...
long estimatedTime = System.nanoTime() - startTime;
查找“nanoTime vs currentTimeMillis”,您将获得数百篇文章。
关于java - System.out.println()耗时; Java语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20683361/