首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java高精度秒表

Java高精度秒表
EN

Stack Overflow用户
提问于 2011-02-25 20:37:21
回答 7查看 3K关注 0票数 4

我有这个问题,我不知道如何解决它。

我必须测量执行某些功能所需的时间。好的,秒表功能用毫秒来测量时间不够好,所以我用纳秒来测量时间。

问题是,函数结束得太快了,即使秒表也不能测量它。

我知道秒表是有效的,因为我试着在我的函数中加入例如Thread.sleep(1) (Thread.sleep的单位是毫秒),我得到了我的时间,但如果没有Thread.sleep,我的时间总是0。有什么想法吗?

下面是我的代码:

代码语言:javascript
复制
long startTimeLocalNS=0;
long stopTimeLocalNS = 0;
startTimeLocalNS = System.nanoTime();
if (something)
{
    /*my Code;*/
}   
stopTimeLocalNS = System.nanoTime();
disconnectTime = (stopTimeLocalNS - startTimeLocalNS);
EN

回答 7

Stack Overflow用户

发布于 2011-02-25 20:40:55

在循环中运行函数几千次(或几百万次),测量总时间并除以迭代次数如何?

但要当心许多pitfalls in writing microbenchmarks

票数 7
EN

Stack Overflow用户

发布于 2011-02-25 20:41:00

你可以这样做:

代码语言:javascript
复制
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;
票数 1
EN

Stack Overflow用户

发布于 2011-02-25 20:41:59

您可以对要测量的代码循环1000次,然后将nanoTime difference除以1000。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5117287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档