【发布时间】:2013-12-19 13:45:56
【问题描述】:
听说System.out.println(); Java 语句代价高(耗费大量时间)
所以我尝试评估它的成本:
当我评估 5 个语句时...The cost = 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
为什么?
【问题讨论】:
-
您应该将基准测试中的调用次数增加到循环中的 5000 次。 那么你可能会得到更好的输出!
-
问题出在您的代码中,而不是在
system.out.println中。 -
你知道即使是一毫秒的成本也太高了,因为普通的 cpu 可以在那段时间内处理几百万条指令?
标签: java debugging monitoring