package com.tcgbp.test;
import static com.tcgbp.tools.ToolMethods.*;
import static com.tcgbp.Sort.ArraySort.*;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.*;
public class Test {
/**
* @param args
* @throws NoSuchMethodException
* @throws SecurityException
* @throws InvocationTargetException
* @throws IllegalAccessException
* @throws IllegalArgumentException
* @throws InstantiationException
*/
public static void main(String[] args) throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException, InstantiationException {
// testMethod(Test.class.getDeclaredMethod("randomArray",int.class),500);
//
// testMethod(Test.class.getDeclaredMethod("randomArray",int.class),10000);
//
testMethod(com.tcgbp.tools.ToolMethods.class.getDeclaredMethod("randomArray",int.class),1);
//
// testMethod(Test.class.getDeclaredMethod("randomArray",int.class),200);
for(int i=1;i<=32;i++)
testMethod(com.tcgbp.tools.ToolMethods.class.getDeclaredMethod("randomArray",int.class),i);
int al = 10000;
testMethod(com.tcgbp.Sort.ArraySort.class.getDeclaredMethod("bubbleSort",int[].class),randomArray(al));
testMethod(com.tcgbp.Sort.ArraySort.class.getDeclaredMethod("bilateralBubbleSort",int[].class),randomArray(al));
testMethod(com.tcgbp.Sort.ArraySort.class.getDeclaredMethod("selectSort",int[].class),randomArray(al));
testMethod(com.tcgbp.Sort.ArraySort.class.getDeclaredMethod("insertSort",int[].class),randomArray(al));
}
/*
* 用于测试randomArray()方法,至少吧
*/
public static void testMethod(Method m, int n) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException{
long s = System.nanoTime();
m.invoke(null, n);
long duration = System.nanoTime() - s;
println(m.getName() + "(" + n + ")方法運行了" + duration + "纳秒!");
}
/*
* 用于测试数组排序函数
*/
public static void testMethod(Method m, int[] n) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException, InstantiationException{
long s = System.nanoTime();
m.invoke(null, n);
long duration = System.nanoTime() - s;
println(m.getName() + "()方法運行了" + duration + "纳秒!");
}
/*
* 泛型版的,这里没什么用 ╮(╯▽╰)╭ java的泛型
*/
public static <T> void testMethod(Method m, T n) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException{
long s = System.nanoTime();
T d = (T)m.invoke(null, n);
long duration = System.nanoTime() - s;
println(m.getName() + "(" + n.toString() + ")方法運行了" + duration + "纳秒!");
}
}
第一次使用java的反射机制,比我想象的要顺利,不知道能不能做成泛型方法的
我就不太明白为什么第1和第16次调用占得时间就特别多呢 第32次没有!
还有testMethod该怎么应用还没搞清楚
运行结果 写道
randomArray(1)方法運行了913803纳秒!
randomArray(1)方法運行了11454纳秒!
randomArray(2)方法運行了10895纳秒!
randomArray(3)方法運行了11174纳秒!
randomArray(4)方法運行了11733纳秒!
randomArray(5)方法運行了12012纳秒!
randomArray(6)方法運行了13689纳秒!
randomArray(7)方法運行了13130纳秒!
randomArray(8)方法運行了13410纳秒!
randomArray(9)方法運行了13689纳秒!
randomArray(10)方法運行了14248纳秒!
randomArray(11)方法運行了14806纳秒!
randomArray(12)方法運行了15086纳秒!
randomArray(13)方法運行了15645纳秒!
randomArray(14)方法運行了17600纳秒!
randomArray(15)方法運行了3375848纳秒!
randomArray(16)方法運行了71517纳秒!
randomArray(17)方法運行了16203纳秒!
randomArray(18)方法運行了16204纳秒!
randomArray(19)方法運行了16762纳秒!
randomArray(20)方法運行了17320纳秒!
randomArray(21)方法運行了18159纳秒!
randomArray(22)方法運行了18159纳秒!
randomArray(23)方法運行了18438纳秒!
randomArray(24)方法運行了18997纳秒!
randomArray(25)方法運行了19276纳秒!
randomArray(26)方法運行了19555纳秒!
randomArray(27)方法運行了23746纳秒!
randomArray(28)方法運行了21232纳秒!
randomArray(29)方法運行了21232纳秒!
randomArray(30)方法運行了22070纳秒!
randomArray(31)方法運行了22070纳秒!
randomArray(32)方法運行了22629纳秒!
bubbleSort()方法運行了560466763纳秒!
bilateralBubbleSort()方法運行了458224998纳秒!
selectSort()方法運行了336764309纳秒!
insertSort()方法運行了161829227纳秒!
分享到:
相关推荐
回调函数初探[参考].pdf
本文将要解释什么是回调函数、它们有什么好处、为什么要使用它们等等问题,在开始之前,假设你已经熟知了函数指针。 什么是回调函数? 简而言之,回调函数就是一个通过函数指针调用的函数。假如你把函数的...
大数据测试技术初探.docx
C++虚函数调用机制初探.pdf
车联网RFID系统测试平台初探.pdf
“反射(Reflection)是.NET中的一个重要技术,通过反射,可以在运行时获得某个类型的各种信息,包括方法、属性、事件及构造函数等,还可以获得每个成员的名称、限定符和参数等信息。可以说有了反射,即可对每个类型...
android自动化测试初探 InstrumentationTestRunner
水电自动化控制设备的可靠性测试方法初探.pdf
土体渗气性原位测试装置初探,陈宏伟,徐松,土的渗气性是其基本性质之一,准确测定其大小对于工程设计具有重要意义。本文提出了一种新型的原位测试土体渗气性的仪器设备,在
gtest 单元测试框架 Google C++ Testing Framework(简称gtest,http://code.google.com/p/googletest/)是Google公司发布的一个开源C/C++单元测试框架,已被应用于多个开源项目及Google内部项目中,知名的例子包括...
招商银行-国内商业银行流动性压力测试方法初探.pdf
Android自动化测试初探
函数式编程初探共2页.pdf.zip
PHP函数传递及返回值初探.pdf
基于机器学习的脉动源格林函数预报初探.pdf
基于硬件在环的电动汽车整车控制器功能测试方法初探.pdf
Android自动化测试初探 简单介绍了android自动化测试的方法,给入门者提供思路!
初探WSDL2JAVA工具的使用初探WSDL2JAVA工具的使用初探WSDL2JAVA工具的使用初探WSDL2JAVA工具的使用初探WSDL2JAVA工具的使用初探WSDL2JAVA工具的使用初探WSDL2JAVA工具的使用
从网上下载后觉得不错,所以在此共享,web系统资源初探