java - 在 Java 中,我可以使用单个方法作为其他方法的计时器吗?

标签 java methods timer benchmarking

在测试运行时时,我按以下方式使用 System.nanotime():

startTime = System.nanotime();

// some statements

System.out.println("Runtime: " + (System.nanoTime() - startTime));

有没有办法将这个测试模型重用于我程序中的其他代码块?换句话说,我可以将其创建为方法并在测试期间将其他方法传递给它吗?

最佳答案

是的,你可以,但它比你的方法更复杂:

time(new Runnable() {
    public void run() {
        System.out.println("statements");
    }
});

static void time(Runnable r) {
    long startTime = System.nanoTime();
    r.run();
    System.out.println("Runtime: " + (System.nanoTime() - startTime));
}

在 Java 7 中,这会变得更简单(我省略了“Measure”实现):

try (Measure m = new Measure()) {
    System.out.println("statements");
}

顺便说一句,使用System.nanoTime()比使用System.currentTimeMillis()更好,不仅因为前者更准确,而且因为稍后会在夏令时更改(或其他系统时间更改)时出现问题。

关于java - 在 Java 中,我可以使用单个方法作为其他方法的计时器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5590903/

相关文章:

java - 如何指定希望工具栏中的元素居中?

java - Lucene 4.0 中的词频

java - 下一页的前向变量

java - 难以从用户处获取 ID

c# 事件处理程序被添加两次

Flutter - 计时器无意中暂停

linux - 通过将 -lrt 传递给 gcc 修复了对 `timer_getoverrun' 的 undefined reference 。但为什么?

java - Bitcask 可以用于简单和高性能的文件存储吗?

r - R中 `subset`方法的多重分派(dispatch)

javascript - 在 Javascript 类中从另一个方法调用一个方法