论坛首页 Java企业应用论坛

MVEL,Groovy,OGNL等脚本语言的性能测试结果

浏览 10800 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-04-05   最后修改:2009-04-05
    使用drools的时候发现MVEL的官方网站http://mvel.codehaus.org上面有一篇测试嵌入式脚本语言的文章,翻译一下共享给大家。有何问题请回复我修改。
对比:


   上图表明:通过适用的简单基准来测试的MVEL相对其他流行的嵌入式脚本语言的性能差异,。
    图块越短,性能越好。
    无缓存值显示没有缓存时的性能,或再利用的资源如:解析器,工厂等,在这个类别中每一次迭代代表一个冷启动的解析器,它们通向表达式的解析结果。在MVEL的方式中,这一般涉及到解释性能。在各种嵌入式语言库的性能方面,这种方式可以用来评估他们如何有效地解析实际的表达式。
    缓存值显示使用缓存时候的性能,包括重用一些常用的解析器或工厂。这未必反映了真实世界的性能,因为它可能在很长一段时间内不切合实际的操作缓存变量解析器。然而,基准允许这样做。
    对于这个测试, 只有MVEL和Groovy能够通过可运行编译来实施测试。编译测试衡量字节码生成的性能。虽然OGNL 2.7.2支持字节码生成,但是它仅仅支持针对root context对象的字节码生成。所有这些试验都利用了变量反射,因此不可能以测试OGNL的Javassist字节码编译器。
    Groovy没有测试无缓存值。这是因为Groovy的编译对合理性测试太慢。 25000编译在Groovy中执行超过5分钟。有趣的是,Groovy的编译测试取得比MVEL和JEXL都慢的性能 。编译测试Groovy使用了同样的groovy.lang.Script作为为每个迭代对象,并没有重新注入变量。

结果:
1:目前:MVEL拥有最快的解析器和编译器
2:MVEL优于其他嵌入式脚本语言的所有基准,除了算术性能基准方面:JEXL和MVEL并列( 12ms操作50000次迭代) 。
3:Groovy的编译器最慢,其次是JUEL然后OGNL 。
4:OGNL最差缓存反射性能,其次是JEXL 。
5:OGNL的嵌套map基准表现最差。这个基准包括解决从使用索引语法的Map中获取属性的问题(foo['bar']['something']) 。
6:Groovy的编译器是目前使用一个特设的方式的时候速度太慢。
原始结果数据:
Test Group: foo.bar.name (iterations: 25000)
OGNL 2.7.2 [No Cache]: Average ms: 1633
OGNL 2.7.2 [Cached]: Average ms: 181
OGNL 2.7.2 [Compiled]: Not Supported
JEXL 1.1 [No Cache]: Average ms: 540
JEXL 1.1 [Cached]: Average ms: 121
JEXL 1.1 [Compiled]: Not Supported
JUEL 2.1.0 [No Cache]: Average ms: 2895
JUEL 2.1.0 [Cached]: Average ms: 52
JUEL 2.1.0 [Compiled]: Not Supported
Groovy 1.5.7 [No Cache]: Not Supported
Groovy 1.5.7 [Cached]: Average ms: 34
Groovy 1.5.7 [Compiled]: Not Supported
MVEL 2.0 [No Cache]: Average ms: 127
MVEL 2.0 [Cached]: Average ms: 12
MVEL 2.0 [Compiled]: Average ms: 6

Test Group: x + y * z (iterations: 25000)
OGNL 2.7.2 [No Cache]: Average ms: 1530
OGNL 2.7.2 [Cached]: Average ms: 66
OGNL 2.7.2 [Compiled]: Not Supported
JEXL 1.1 [No Cache]: Average ms: 523
JEXL 1.1 [Cached]: Average ms: 12
JEXL 1.1 [Compiled]: Not Supported
JUEL 2.1.0 [No Cache]: Average ms: 2908
JUEL 2.1.0 [Cached]: Average ms: 61
JUEL 2.1.0 [Compiled]: Not Supported
Groovy 1.5.7 [No Cache]: Not Supported
Groovy 1.5.7 [Cached]: Average ms: 39
Groovy 1.5.7 [Compiled]: Not Supported
MVEL 2.0 [No Cache]: Average ms: 161
MVEL 2.0 [Cached]: Average ms: 12
MVEL 2.0 [Compiled]: Average ms: 15

Test Group: foo['bar']['something'] (iterations: 25000)
OGNL 2.7.2 [No Cache]: Average ms: 1596
OGNL 2.7.2 [Cached]: Average ms: 75
OGNL 2.7.2 [Compiled]: Not Supported
JEXL 1.1 [No Cache]: Average ms: 680
JEXL 1.1 [Cached]: Average ms: 11
JEXL 1.1 [Compiled]: Not Supported
JUEL 2.1.0 [No Cache]: Average ms: 2889
JUEL 2.1.0 [Cached]: Average ms: 39
JUEL 2.1.0 [Compiled]: Not Supported
Groovy 1.5.7 [No Cache]: Not Supported
Groovy 1.5.7 [Cached]: Not Supported
Groovy 1.5.7 [Compiled]: Average ms: 35
MVEL 2.0 [No Cache]: Average ms: 144
MVEL 2.0 [Cached]: Average ms: 8
MVEL 2.0 [Compiled]: Average ms: 5
原文地址点击 这里,以后更多twitter信息请在twitter上follow我。
  • 大小: 40.7 KB
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics