java 计算方法执行时间

来源:互联网 发布:硬妹风的淘宝店 编辑:程序博客网 时间:2024/05/16 02:47

用到了反射,也是对反射的简单回顾吧。

package algorithm;import java.lang.reflect.Method;import java.util.Arrays;public class Test {    // 排序原始数据    private static final int[] NUMBERS =        {49, 38, 65, 97, 76, 13, 27, 78, 34, 12, 64, 5, 4, 62, 99,                 98, 54, 56, 17, 18, 23, 34, 15, 35, 25, 53, 51,123,                23,234,21345,123,12343,4545,767823,213,5767,3434,34,                 12, 64, 5, 4, 62, 99, 98, 54, 56, 17, 18, 23, 34, 15,                 35, 25, 53, 51,123,23,234,21345,123,12343,4545,767823,                98, 54, 56, 17, 18, 23, 34, 15, 35, 25, 53, 51,123,-5,-10,-100,                23,234,21345,123,12343,4545,767823,213,5767,3434,34,                 12, 64, 5, 4, 62, 99, 98, 54, 56, 17, 18, 23, 34, 15,213};    /**     * 计算方法执行时间     * @param method 所有方法都是Method类的对象     */    private static void methodExecutionTime (Method method) {        long begin = System.currentTimeMillis();         try {            method.invoke(new Test(), NUMBERS);        } catch (Exception e) {            e.printStackTrace();        }        long end = System.currentTimeMillis() - begin;         System.out.println(method.getName() + "方法耗时:" + end + "毫秒");    }    public static void main(String[] args) throws Exception {        methodExecutionTime(Test.class.getMethod("insertionSort", new Class[]{int[].class}));    }    /**     * 直接插入排序     * 时间复杂度 平均O(n^2),最好O(n),最坏O(n^2)     * 空间复杂度O(1)     * @param a     */    public static void insertionSort(int[] a) {        int tmp;        for (int i = 1; i < a.length; i++) {            for (int j = i; j > 0; j--) {                if (a[j] < a[j - 1]) {                    tmp = a[j - 1];                    a[j - 1] = a[j];                    a[j] = tmp;                }            }        }        System.out.println("insertionSort" + Arrays.toString(a));      }}