MVEL 与反射。关于对象成员访问通常更快?
Posted
技术标签:
【中文标题】MVEL 与反射。关于对象成员访问通常更快?【英文标题】:MVEL vs reflection. What is generally faster regarding object member access? 【发布时间】:2016-09-22 21:20:26 【问题描述】:关于对象成员访问,什么通常更快? 1.执行编译好的mvel表达式 2.执行缓存反射方法
【问题讨论】:
【参考方案1】:Records | From Json | From Dto | To Dto |
---|---|---|---|
With Getter/Setter | 7,335,792.22 | 1,130,815.56 | 1,239,896.67 |
10 | 49,263.33 | 16,240.00 | 13,446.67 |
1000 | 392,000.00 | 93,250.00 | 84,123.33 |
100000 | 21,566,113.33 | 3,282,956.67 | 3,622,120.00 |
With Reflection | 26,754,304.44 | 15,027,837.78 | 15,356,792.22 |
10 | 136,566.67 | 63,640.00 | 52,193.33 |
1000 | 1,294,553.33 | 618,830.00 | 542,986.67 |
100000 | 78,831,793.33 | 44,401,043.33 | 45,475,196.67 |
With Mvel | 36,520,687.78 | 50,511,424.44 | 50,790,170.00 |
10 | 5,707,033.33 | 515,293.33 | 463,266.67 |
1000 | 1,535,563.33 | 1,850,083.33 | 1,838,030.00 |
100000 | 102,319,466.67 | 149,168,896.67 | 150,069,213.33 |
下图显示了对应于一个小测试代码的统计数据,该代码测量了访问 POJO 成员的三种不同方法的性能。
-
使用 Getter/Setter
带反射
使用 Mvel 编译表达式
对于每种方法,有三个记录集,即 10 条记录、1000 条记录和 100,000 条记录。每个记录集执行 30 次,相关测量以纳秒为单位取平均值。
【讨论】:
介意分享测试代码吗?你用 JMH 吗? 将设置一个 github 存储库以共享相关代码,但总的来说,以上统计数据回答了您的问题以上是关于MVEL 与反射。关于对象成员访问通常更快?的主要内容,如果未能解决你的问题,请参考以下文章