我使用以下代码来评估我的方法/操作的性能 -
问题:由于这是跨代码的,因此应从生产代码中删除,以防止降低应用程序性能。
在我们的一个讨论中,有人指出Linux(时区)上的一些时间调用会执行IO寻找/ etc中的文件。这导致了负载评估中加载系统的巨大缓慢。
long startTime = System.nanoTime();
... <code> ....
long estimatedTime = System. nanoTime () - startTime;
double timeInSeconds = estimatedTime / 1E9;
print ("Estimated_Time =>" + estimatedTime +
":nano seconds " + timeInSeconds + ":seconds");
答案 0 :(得分:3)
通过使用任何现代IDE,您可以替换所有源代码,并将System.nanoTime()
替换为MyUtils.nanoTime()
静态方法:
private static final boolean PRODUCTION = true; // change to false while development
public static long nanoTime() {
return PRODUCTION ? 0 : System.nanoTime();
}
这将允许不清除此指标中的代码,但可以减少生产模式中的性能问题。
<强> UPD 强>:
这些代码行,如果经常重复:
long estimatedTime = System. nanoTime () - startTime;
double timeInSeconds = estimatedTime / 1E9;
print ("Estimated_Time =>" + estimatedTime +
":nano seconds " + timeInSeconds + ":seconds");
也可以使用相同的布尔触发器以相同的方式替换。
答案 1 :(得分:2)
System.nanoTime()的成本约为35 ns。 YMMV。
将数字连接到字符串的成本要高得多,并且执行任何类型的系统调用的成本要高得多。 IO是2+微秒。
考虑时间不太可能是一个问题,但除非你非常小心如何记录这些信息,否则它的成本会高出100倍。