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

在测试运行时时,我按以下方式使用 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()更好,不仅因为前者更准确,而且因为稍后会在夏令时更改(或其他系统时间更改)时出现问题。

https://stackoverflow.com/questions/5590903/

相关文章:

regex - 正则表达式和 sed 从数百个文件中删除某些字符串的所有出现

xml - 在 vb net 中从 XML 中获取值

math - 需要给定排名和底池金额的奖品奖励功能

drupal - 如果编辑或添加表单,如何在 drupal 节点表单中检测?

WPF - TextBlock 文本 + 超链接

perl - 如何在 perl 中的 fork 之间共享简单标量(计数器变量)?

python - OOP Python 向基类添加一些属性?

file - 使用 cURL 检查文件是否存在于 FTPS 站点上

django - 区分 ModelAdmin 媒体以在 Django 中添加/更改页面

python - 始终返回数组的 numpy 切片