2

func a(x, y z)時間を計りたいのですが、これを行う方法はありますか:

time = timeit( a(x,y,z) )Java では、任意の関数を受け入れる時間です。

お気に入り:

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

3 に答える 3

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(); }
}
于 2013-08-08T14:48:32.410 に答える
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[]{});
于 2013-08-08T15:10:23.863 に答える