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;
}
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(); }
}
リフレクションの使用:
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[]{});