gpt4 book ai didi

java - 耗时测量问题 - JAVA

转载 作者:行者123 更新时间:2023-11-30 10:15:57 26 4
gpt4 key购买 nike

我正在 Android 上构建一个简单的游戏,我想检查一些函数的执行持续时间。

为此,我编写了一个类 (TimeLog),它在实例化时将 System.nanotime() 保存在 Double 字段上。该类当然有一个 end() 方法,该方法减去实例化到当前 System.nanotime() 时获得的时间。

问题是,如果我尝试测量包含其他方法的方法的持续时间,有时内部方法比包含它们的方法需要更多的时间来执行。我不明白我哪里错了。


这是一个例子:

void myFunc(){
TimeLog out = new TimeLog();
inner1();
inner2();
out.end();
}

void inner1(){
TimeLog in1 = new TimeLog();
//something...
in1.end();
}

void inner2(){
TimeLog in2 = new TimeLog();
//something...
in2.end();
}


Main(){
myFunc();
}

有时 in1 或 in2 返回的值比 out 高。

这是时间日志:

public class Timelog
{

private double startTime;
private double duration;

public TimeLog (){
startTime = System.nanoTime();
}

public void end(){
duration = (int)(System.nanoTime() - startTime);
}

public void log(){
Log.d("TIMELOG", ":" + duration);
}
}

最佳答案

首先,System.nanoTime() 返回一个long,而不是一个int 或一个double所以你应该使用 long 来做正确的计算。我不确定这是否能解决您的问题,如果不能,请发布示例输出。

编辑:您能否也显示调用 log() 方法的部分?该代码中的任何地方都没有调用它。

关于java - 耗时测量问题 - JAVA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50239002/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com