编写一个通用方法来使用Java 8 lambdas计算任何其他方法的时间

kxi*_*rog 3 lambda timing java-8

我一直试图弄清楚是否有办法编写一个方法,将Java 8方法引用作为输入,运行该方法并返回运行所花费的时间.

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

这是我到目前为止所做的,但这只适用于没有参数的方法......我正在寻找一些可以使用一个可以接受参数的方法的东西.那可能吗?

dka*_*zel 6

好吧,解决方法是将方法包装在lambda中

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

long elapsed = time( () -> myMethod(foo, bar));
Run Code Online (Sandbox Code Playgroud)