比较“普通创建1亿个对象并调用方法”、“给1个对象并调用方法1亿次”、“反射创建1个对象并调用方法”的java代码
public class Client {
private static final int loopTime = 1000*1000*1000;
public static class Person{
private int age;
public void setAge(int age){
this.age=age;
}
};
private static void t1(){
long start = System.currentTimeMillis();
for (int i = 0; i <loopTime ; i++) {
Person person = new Person();
person.setAge(32);
}
long end = System.currentTimeMillis();
System.out.println("循环10亿次创建对象所需时间:" + (end - start));
}
private static void t2() {
long start = System.currentTimeMillis();
Person person = new Person();
for (int i = 0; i <loopTime ; i++) {
person.setAge(32);
}
long end = System.currentTimeMillis();
System.out.println("循环10亿次给同1对象赋值所需时间:" + (end - start));
}
private static void t3() throws Exception {
long start = System.currentTimeMillis();
for (int i = 0; i < loopTime; i++) {
Class<Person> personClass = Person.class;
Person person = personClass.newInstance();
Method method = personClass.getMethod("setAge", int.class);
method.invoke(person,32);
}
long end = System.currentTimeMillis();
System.out.println("循环10亿次反射创建对象所需时间:" + (end - start));
}
public static void main(String[] args) throws Exception {
t1();t2();t3();
}
}
执行结果