喜誰能幫助我在這個問題上如何估算方法的執行時間,當它使用Java反射調用
我調用一個方法類「CustomeMath」的「添加」現在我想知道的執行這個方法只需要addMe()方法的時間(這個時間不包括用方法調用的執行時間「反射的Invoke()」來調用某個方法。)。我發佈了這個問題的通用代碼。
import java.lang.reflect。*;
public class CustomeMath public int addMe(int a,int b) { return a + b; }
public static void main(String args[]) { try { Class cls = Class.forName("CustomeMath"); Class partypes[] = new Class[2]; partypes[0] = Integer.TYPE; partypes[1] = Integer.TYPE; Method meth = cls.getMethod( "addMe", partypes); CustomeMath methobj = new CustomeMath(); Object arglist[] = new Object[2]; arglist[0] = new Integer(37); arglist[1] = new Integer(47); Object retobj = meth.invoke(methobj, arglist); Integer retval = (Integer)retobj; System.out.println(retval.intValue()); } catch (Throwable e) { System.err.println(e); } }
}
現在我想通過該方法「ADDME()」所採取的執行時間。而這段時間不包括時所採取的「調用()」?方法。怎麼做我得到這個時間(記住我不想用‘System.currentTimeMillis的();’)如果你想用一些公關來衡量倍
@大衛OlivánUbieto – zaree 2011-04-07 06:22:39
@大衛OlivánUbieto 1stly ::我不能把System.nanoTime作爲第一行中我的每一個方法(要獲得執行時間),並得到差(因爲這可能是也一個願望清單提前,我只知道簽名,沒有別的)第二::我的問題是保持在同一點,「我想獲得執行時間所採取的方法,不包括Java的invoke()實用程序所花費的開銷反思「請給一些其他方向的幫助。 – zaree 2011-04-07 06:35:46
@zaree如果您使用反射調用方法,並且您需要測量方法的執行時間而無需調用開銷,則幾乎沒有可能。如果我們可以假設調用開銷遠低於執行時間,則在調用之前和之後使用'nanoTime()'。如果您重複使用'Method'對象並多次調用該方法,則可以忽略調用開銷。如果您無法在每個稱爲(內部或外部)的方法中開始放置時間測量線,請按照說明使用分析器。 – 2011-04-08 04:37:10