gpt4 book ai didi

java - 在 Java 中传递静态方法

转载 作者:行者123 更新时间:2023-11-30 06:06:55 25 4
gpt4 key购买 nike

我正在尝试创建一个类来计算方法的平均运行时间。我知道如何通过运行 100 次并取其平均值来做到这一点。示例:

private long calculateAvg(){
long totalTime = 0;

for(int i = 0; i < ITERATIONS; i++){
long startTime = System.nanoTime();
testMethod();
long endTime = System.nanoTime();

totalTime += (endTime - startTime); //divide by 1000000 to get milliseconds.
}
return (totalTime / ITERATIONS);

}

现在我可以将它设置为适用于一个静态方法,但是有没有一种方法可以将不同的静态方法传递给它来计算,而不是为我想测试的每个方法创建一个?如果没有,是否有一种设计模式可以在这里工作?截至目前,我正在为我想要计时的所有其他方法创建其中一种方法,但它似乎效率不高,因为我重复使用了太多代码。

最佳答案

您可以接受并运行一个Runnable 参数:

private long calculateAvg(Runnable r) {
//...
long startTime = System.nanoTime();
r.run();
long endTime = System.nanoTime();
//...
}

然后这样调用它:

long avg1 = calculateAvg(() -> testMethod());
long avg2 = calculateAvg(() -> testMethod2());

您可能还想考虑来自 How do I write a correct micro-benchmark in Java? 的一些提示

关于java - 在 Java 中传递静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42941570/

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