浏览 10800 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-04-05
最后修改:2009-04-05
对比: 上图表明:通过适用的简单基准来测试的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我。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |