public classTestMain {/***@paramargs*/
public static voidmain(String[] args) {
FromBean fb= newFromBean();
fb.setAddress("北京市朝阳区大屯路");
fb.setAge(20);
fb.setMoney(30000.111);
fb.setIdno("110330219879208733");
fb.setName("测试");
IMethodCallBack beanutilCB= newIMethodCallBack() {
@OverridepublicString getMethodName() {return "BeanUtil.copyProperties";
}
@Overridepublic ToBean callMethod(FromBean frombean) throwsException {
ToBean toBean= newToBean();
BeanUtils.copyProperties(toBean, frombean);returntoBean;
}
};
IMethodCallBack propertyCB= newIMethodCallBack() {
@OverridepublicString getMethodName() {return "PropertyUtils.copyProperties";
}
@Overridepublic ToBean callMethod(FromBean frombean) throwsException {
ToBean toBean= newToBean();
PropertyUtils.copyProperties(toBean, frombean);returntoBean;
}
};
IMethodCallBack springCB= newIMethodCallBack() {
@OverridepublicString getMethodName() {return "org.springframework.beans.BeanUtils.copyProperties";
}
@Overridepublic ToBean callMethod(FromBean frombean) throwsException {
ToBean toBean= newToBean();
org.springframework.beans.BeanUtils.copyProperties(frombean,
toBean);returntoBean;
}
};
IMethodCallBack cglibCB= newIMethodCallBack() {
BeanCopier bc= BeanCopier.create(FromBean.class, ToBean.class,false);
@OverridepublicString getMethodName() {return "BeanCopier.create";
}
@Overridepublic ToBean callMethod(FromBean frombean) throwsException {
ToBean toBean= newToBean();
bc.copy(frombean, toBean,null);returntoBean;
}
};
// 数量较少的时候,测试性能
BenchmarkTest bt= new BenchmarkTest(10);
bt.benchmark(beanutilCB, fb);
bt.benchmark(propertyCB, fb);
bt.benchmark(springCB, fb);
bt.benchmark(cglibCB, fb);
// 测试一万次性能测试
BenchmarkTest bt10000= new BenchmarkTest(10000);
bt10000.benchmark(beanutilCB, fb);
bt10000.benchmark(propertyCB, fb);
bt10000.benchmark(springCB, fb);
bt10000.benchmark(cglibCB, fb);
// 担心因为顺序问题影响测试结果
BenchmarkTest bt1000R= new BenchmarkTest(10000);
bt1000R.benchmark(cglibCB, fb);
bt1000R.benchmark(springCB, fb);
bt1000R.benchmark(propertyCB, fb);
bt1000R.benchmark(beanutilCB, fb);
}
}