如何创建计时器功能?

时间:2013-08-08 14:41:43

标签: java function timer

我有一个func a(x, y z)想要时间,有没有办法解决这个问题:

在java中

time = timeit( a(x,y,z) ),它接受​​任何函数的时间。

像:

long timeit(Object func){
    long startTime = System.currentTimeMillis();
    func(...);
    return System.currentTimeMillis() - startTime;
}

3 个答案:

答案 0 :(得分:5)

您需要将您的功能放在Runnable界面的public void run()方法中。 修改后的代码:

public long timeit(Runnable func)
{
    long startTime = System.currentTimeMillis();
    func.run();
    return System.currentTimeMillis() - startTime;
}

功能:

public class MyFunction implements Runnable
{
    @Override public void run() { System.out.println(); }
}

答案 1 :(得分:1)

使用反思:

如果functionCall()是实例方法
- >为班级创建一个对象 - >使用该类的对象调用方法

MyClass objToPass = new MyClass();
Method m;
//Assuming functionCall() takes no arguments
m = MyClass.class.getMethod("functionCall", new Class[]{});
//Parameter list empty
m.invoke(objToPass, new Object[]{});

答案 2 :(得分:0)

如何用一个方法定义一个接口(比如说FunctionRunner)(让我们称之为run())。现在,您可以实现此接口,并在调用run()时执行您想要执行的任何操作。然后你的代码来衡量一个函数的时间就像这样:

long timeit(FunctionRunner func){
    long startTime = System.currentTimeMillis();
    func.run();
    return System.currentTimeMillis() - startTime;
}