为什么spring ne beanwrapper#getPropertyValue如此慢?
这是我的测试方法。
我正在尝试调用这种方法100000次。
使用Spring的BeanWrapper
遵循beanwrapper.getPropertyValue
的费用为12000 ms。
private static void test() {
MyBean bean = new MyBean();
Field[] fields = MyBean.class.getDeclaredFields();
BeanWrapper beanWrapper = new BeanWrapperImpl(bean);
for (Field f : fields) {
f.setAccessible(true);
String fieldName = f.getName();
Object fieldValue = beanWrapper.getPropertyValue(fieldName);
}
}
使用Java内省
,当我更改代码时使用 field.get
它的价格仅为400毫秒。
private static void test() {
MyBean bean = new MyBean();
Field[] fields = MyBean.class.getDeclaredFields();
BeanWrapper beanWrapper = new BeanWrapperImpl(bean);
for (Field f : fields) {
f.setAccessible(true);
String fieldName = f.getName();
Object fieldValue = f.get(bean);
// Object fieldValue = beanWrapper.getPropertyValue(fieldName);
}
}
Why is Spring's beanwrapper.getPropertyValue 那么慢吗?
This is my test method.
I'm trying to invoke this method 100000 times.
With Spring's BeanWrapper
Following using BeanWrapper.getPropertyValue
costs 12000 ms.
private static void test() {
MyBean bean = new MyBean();
Field[] fields = MyBean.class.getDeclaredFields();
BeanWrapper beanWrapper = new BeanWrapperImpl(bean);
for (Field f : fields) {
f.setAccessible(true);
String fieldName = f.getName();
Object fieldValue = beanWrapper.getPropertyValue(fieldName);
}
}
Using Java introspection
And when I change the code to use Field.get
it only costs about 400 ms.
private static void test() {
MyBean bean = new MyBean();
Field[] fields = MyBean.class.getDeclaredFields();
BeanWrapper beanWrapper = new BeanWrapperImpl(bean);
for (Field f : fields) {
f.setAccessible(true);
String fieldName = f.getName();
Object fieldValue = f.get(bean);
// Object fieldValue = beanWrapper.getPropertyValue(fieldName);
}
}
Why is Spring's BeanWrapper.getPropertyValue so slow?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论