使用Java8Lambdas编写通用方法来计时任何其他方法

使用Java8Lambdas编写通用方法来计时任何其他方法,lambda,java-8,timing,Lambda,Java 8,Timing,我一直在试图找出是否有一种方法可以编写一个将Java8方法引用作为输入的方法,运行该方法并返回运行所需的时间 public static long time(Runnable c) { long start, end; start = System.currentTimeMillis(); c.run(); end = System.currentTimeMillis(); return (end - start); } 这是我到目前为止所做的,但这只适

我一直在试图找出是否有一种方法可以编写一个将Java8方法引用作为输入的方法,运行该方法并返回运行所需的时间

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

这是我到目前为止所做的,但这只适用于没有参数的方法…我正在寻找一些可以与一个也可以接受参数的方法一起工作的东西。这可能吗?

好的,一个解决办法是将您的方法封装在lambda中

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

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

作为旁注,如果你打算用它来做微观基准测试,那么你最好学习像JMH这样的基准测试框架。我真的希望你不打算用它来做基准测试。@BrianGoetz是的,我确实打算用它来做基准测试。你能解释一下有什么问题吗?…谢谢!那正是我想要的