使用Java 8的lambda表达式编写通用方法来计时任何其他方法

3

我一直在尝试找出一种方法,可以编写一个方法来接受Java 8方法引用作为输入,运行该方法并返回运行所需的时间。

public static long time(Runnable c) {
    long start, end;
    start = System.currentTimeMillis();
    c.run();
    end = System.currentTimeMillis();
    return (end - start);
}

这是我目前的进展,但只适用于没有参数的方法......我正在寻找能够处理带有参数方法的东西。这可行吗?


2
顺便提一下,如果你打算进行微基准测试,那么最好学习一下像JMH这样的基准测试框架。 - Tunaki
2
我真的希望你不打算用这个来进行基准测试。 - Brian Goetz
@BrianGoetz 是的,我打算用它来进行基准测试。您能解释一下这样做会有什么问题吗?... - kxirog
1
如何在Java中编写正确的微基准测试? - Holger
1个回答

6

嗯,一个解决方法是将您的方法包装在lambda函数中

int foo =...
Object bar = ...

long elapsed = time( () -> myMethod(foo, bar));

1
谢谢!这正是我在寻找的。 - kxirog

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接