我有这个问题,我不知道如何解决它。
我必须测量执行某些功能所需的时间。好的,秒表功能用毫秒来测量时间不够好,所以我用纳秒来测量时间。
问题是,函数结束得太快了,即使秒表也不能测量它。
我知道秒表是有效的,因为我试着在我的函数中加入例如Thread.sleep(1) (Thread.sleep的单位是毫秒),我得到了我的时间,但如果没有Thread.sleep,我的时间总是0。有什么想法吗?
下面是我的代码:
long startTimeLocalNS=0;
long stopTimeLocalNS = 0;
startTimeLocalNS = System.nanoTime();
if (something)
{
/*my Code;*/
}
stopTimeLocalNS = System.nanoTime();
disconnectTime = (stopTimeLocalNS - startTimeLocalNS);发布于 2011-02-25 20:40:55
在循环中运行函数几千次(或几百万次),测量总时间并除以迭代次数如何?
但要当心许多pitfalls in writing microbenchmarks。
发布于 2011-02-25 20:41:00
你可以这样做:
long startTimeLocalNS=0;
long stopTimeLocalNS = 0;
int count = 10000;
startTimeLocalNS = System.nanoTime();
if (something)
{
while(count-- != 0) {
/*my Code;*/
}
}
stopTimeLocalNS = System.nanoTime();
disconnectTime = (stopTimeLocalNS - startTimeLocalNS) / count;发布于 2011-02-25 20:41:59
您可以对要测量的代码循环1000次,然后将nanoTime difference除以1000。
https://stackoverflow.com/questions/5117287
复制相似问题