时间戳的低延迟记录通常是几纳秒

时间:2013-06-20 13:48:31

标签: java

我正在尝试检查由于Java中的特定方法而导致的开销。 假设方法是“发送(消息)”,我想“记录(时间戳);发送(消息);日志(时间戳)”,并找到时间戳之间的差异。问题是该方法非常快(预期差异以纳秒为单位)。我也不想测量记录时间戳所花费的时间(除非它是非常微不足道的)。你能否推荐一种有效记录时间戳的方法?

2 个答案:

答案 0 :(得分:2)

执行此操作的最佳方法是记录方法调用之前的时间,然后调用方法数千甚至数百万次并记录结束时间。快速划分将告诉您单次通话的总时间(这将非常小)。

由于JIT'ing,请确保您以与在生产中运行相同的方式测试方法,否则您可能会在现实世界中对测试中的结果产生不同的结果。此外,您可能希望在开始时间测试之前运行该方法几千次,以确保您实际运行完全优化的代码。

答案 1 :(得分:0)

如果您害怕log开销,解决方法很简单:

final long before, after;

before = System.nanoTime();
send(message);
after = System.nanoTime();

log("before: " + before);
log("after: " + after);

因此,剩下的唯一开销就是调用System.nanoTime()。