/************************************************************************** /* Performance-measurement for dynamic method-invocation using reflection /* /* Copyright (c) 2004 by Bernhard Bablok (mail@bablokb.de) /* /* This program is free software; you can redistribute it and/or modify /* it under the terms of the GNU General Public License as published /* by the Free Software Foundation; either version 2 of the License or /* (at your option) any later version. /* /* This program is distributed in the hope that it will be useful, but /* WITHOUT ANY WARRANTY; without even the implied warranty of /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the /* GNU General Public License for more details. /* /* You should have received a copy of the GNU General Public License /* along with this program; see the file COPYING. If not, write to /* the Free Software Foundation Inc., 59 Temple Place - Suite 330, /* Boston, MA 02111-1307 USA /**************************************************************************/ import java.lang.reflect.*; /** Performance-measurement for dynamic method-invocation using reflection @version $Revision: 1.1 $ @author $Author: bablokb $ */ public class DynPerf { ////////////////////////////////////////////////////////////////////////////// /** Main entry point. @param args Commandline arguments (ignored). */ public static void main(String[] args) { try { DynPerf mc = new DynPerf(); double i; long t1 = System.currentTimeMillis(); for (i=1;i<100000;++i) Math.max(i,i+1); long t2 = System.currentTimeMillis(); Class[] types = new Class[2]; types[0] = Double.TYPE; types[1] = Double.TYPE; Method m = Math.class.getDeclaredMethod("max",types); Double[] arguments = new Double[2]; long t3 = System.currentTimeMillis(); for (i=1;i<100000;++i) { arguments[0] = new Double(i); arguments[1] = new Double(i+1); m.invoke(null,arguments); } long t4 = System.currentTimeMillis(); System.out.println("direct: " + (t2-t1) + "msec" + "\ndynamic: " + (t4-t3) + "msec\n"); } catch (Exception e) { e.printStackTrace(); } } }