jboss rules3.1m终于用了一个el:mvel,性能与ognl的对比有些让人吃惊

[quote]
Later I will also move templates from StringTemplate to MVEL, our template use is minimal so we don't really care what we use. MVEL is a needed dependency and already provides templates, so we might as well use that. The added bonus is that StringTemplate still relies on antlr-2.7.7, so I'll be able to remove 2 more dependencies.
[/quote]
按照这个本意仅仅是想减少两个包的依赖..丝毫不提mvel的优越性能啊,我倒看中这一点,目前项目中的规则运算巨慢,不过主要原因是hibernate查询导致的...

下面是性能对比:
[url]http://mvel.codehaus.org/Performance+of+MVEL[/url]
===============================================
Test Platform : Java 2 Standard Edition v1.6.0 final
Machine Spec. : Intel Core Duo T2600 1.66Ghz / 2GB DDR2 533Mhz RAM / Windows Vista RTM
VM Options : <<none>>
MVEL Build : 1.2.0 Beta11 w/JIT
OGNL Build : 2.6.11 Stable
===============================================

Test Name : Simple String Pass-Through
Expression : 'Hello World'
Iterations : 50000
Interpreted Results :
(OGNL) : 1344.20ms avg. (mem delta: -789kb) [1424,1393,1299,1302,1302]
(MVEL) : 21.80ms avg. (mem delta: -93kb) [22,21,22,21,23]
Compiled Results :
(OGNL Compiled) : 10.00ms avg. (mem delta: -562kb) [14,9,8,10,9]
(MVEL Compiled) : 0.60ms avg. (mem delta: -18kb) [1,0,1,0,1]
------------------------------------------------
Test Name : Shallow Property
Expression : data
Iterations : 50000
Interpreted Results :
(OGNL) : 1591.20ms avg. (mem delta: -782kb) [1594,1603,1590,1588,1581]
(MVEL) : 49.40ms avg. (mem delta: -712kb) [49,51,49,49,49]
Compiled Results :
(OGNL Compiled) : 34.80ms avg. (mem delta: -636kb) [35,34,34,36,35]
(MVEL Compiled) : 1.80ms avg. (mem delta: -18kb) [2,2,2,2,1]
------------------------------------------------
Test Name : Deep Property
Expression : foo.bar.name
Iterations : 50000
Interpreted Results :
(OGNL) : 1955.20ms avg. (mem delta: -790kb) [1936,1949,1943,1994,1954]
(MVEL) : 114.80ms avg. (mem delta: -112kb) [119,113,110,117,115]
Compiled Results :
(OGNL Compiled) : 92.80ms avg. (mem delta: -580kb) [92,92,92,92,96]
(MVEL Compiled) : 1.80ms avg. (mem delta: -18kb) [1,2,2,2,2]
------------------------------------------------
Test Name : Static Field Access (MVEL)
Expression : Integer.MAX_VALUE
Iterations : 50000
Interpreted Results :
(MVEL) : 90.00ms avg. (mem delta: -658kb) [88,95,108,80,79]
Compiled Results :
(MVEL Compiled) : 2.40ms avg. (mem delta: -337kb) [4,2,2,2,2]
------------------------------------------------
Test Name : Static Field Access (OGNL)
Expression : @java.lang.Integer@MAX_VALUE
Iterations : 50000
Interpreted Results :
(OGNL) : 2036.20ms avg. (mem delta: -791kb) [2119,2039,2118,1946,1959]
Compiled Results :
(OGNL Compiled) : 10.00ms avg. (mem delta: -580kb) [13,9,9,10,9]
------------------------------------------------
Test Name : Inline Array Creation (MVEL)
Expression : {'foo', 'bar'}
Iterations : 50000
Interpreted Results :
(MVEL) : 229.40ms avg. (mem delta: -430kb) [217,217,230,247,236]
Compiled Results :
(MVEL Compiled) : 4.00ms avg. (mem delta: -504kb) [5,3,4,4,4]
------------------------------------------------
Test Name : Inline Array Creation (OGNL)
Expression : new String[] {'foo', 'bar'}
Iterations : 50000
Interpreted Results :
(OGNL) : 1824.80ms avg. (mem delta: -845kb) [1847,1802,1828,1816,1831]
Compiled Results :
(OGNL Compiled) : 62.20ms avg. (mem delta: -449kb) [63,64,62,62,60]
------------------------------------------------
Test Name : Collection Access + Method Call
Expression : funMap['foo'].happy()
Iterations : 50000
Interpreted Results :
(OGNL) : 1968.20ms avg. (mem delta: -788kb) [1959,1953,1949,2021,1959]
(MVEL) : 114.40ms avg. (mem delta: -150kb) [116,114,116,112,114]
Compiled Results :
(OGNL Compiled) : 112.80ms avg. (mem delta: -636kb) [116,111,113,112,112]
(MVEL Compiled) : 2.20ms avg. (mem delta: -18kb) [3,2,2,2,2]
------------------------------------------------
Test Name : Boolean compare
Expression : data == 'cat'
Iterations : 50000
Interpreted Results :
(OGNL) : 1623.20ms avg. (mem delta: -782kb) [1620,1629,1624,1620,1623]
(MVEL) : 99.40ms avg. (mem delta: -673kb) [107,98,99,96,97]
Compiled Results :
(OGNL Compiled) : 54.40ms avg. (mem delta: -541kb) [54,54,57,53,54]
(MVEL Compiled) : 15.60ms avg. (mem delta: -747kb) [16,15,16,16,15]
------------------------------------------------
Test Name : Object instantiation
Expression : new String('Hello')
Iterations : 50000
Interpreted Results :
(OGNL) : 1864.40ms avg. (mem delta: -784kb) [1872,1867,1870,1855,1858]
(MVEL) : 236.00ms avg. (mem delta: -450kb) [238,234,236,236,236]
Compiled Results :
(OGNL Compiled) : 193.00ms avg. (mem delta: -449kb) [196,191,191,196,191]
(MVEL Compiled) : 2.80ms avg. (mem delta: -507kb) [3,3,3,2,3]
------------------------------------------------
Test Name : Method access
Expression : readBack('this is a string')
Iterations : 50000
Interpreted Results :
(OGNL) : 1791.80ms avg. (mem delta: -786kb) [1771,1775,1781,1814,1818]
(MVEL) : 107.60ms avg. (mem delta: -506kb) [109,108,108,106,107]
Compiled Results :
(OGNL Compiled) : 70.60ms avg. (mem delta: -598kb) [69,73,71,71,69]
(MVEL Compiled) : 2.40ms avg. (mem delta: -18kb) [2,3,2,2,3]
------------------------------------------------
Test Name : Arithmetic
Expression : 10 + 1 - 1
Iterations : 50000
Interpreted Results :
(OGNL) : 1812.00ms avg. (mem delta: -371kb) [1853,1821,1798,1792,1796]
(MVEL) : 108.40ms avg. (mem delta: -620kb) [112,108,109,107,106]
Compiled Results :
(OGNL Compiled) : 9.40ms avg. (mem delta: -580kb) [10,9,10,9,9]
(MVEL Compiled) : 0.60ms avg. (mem delta: -18kb) [1,0,1,0,1]
------------------------------------------------
表达式解析器MVEL的了解 MVEL(MVFLEX Expression Language)是一种基于Java的表达式语言,它允许在运行时解析和执行表达式。MVEL 最初是为了提供一个更强大、更易于使用的替代品来执行 Java 的字符串操作和表达式求值而创建的。MVEL 的语法类似于 Java,但更加简洁和灵活,使得编写和阅读表达式更加容易。MVEL 支持各种操作符、条件语句、循环语句等,可以完成复杂的表达式求值和字符串操作。MVEL 支持在运行时动态解析和执行表达式,这意味着您可以在不重新编译代码的情况下修改和执行表达式。 阅读详情

相关推荐

ElasticSearch优化

ElasticSearch_Training_2__Advanced_Concepts_

表达式解析器Mvel2.0(MVFLEX Expression Language)

表达式解析器Mvel2.0(MVFLEX Expression Language) 时间过的好快,突然就发现,已经过去一两年了,这一两年博客也写的不多,快要进入中年了,最重要的就是自律。要好好睡觉,好好学习,好好工作。 废话不多说,这次给大家说的是 表达式语言解析Mvel2.0 简介 MVEL为 MVFLEX Expression Language(MVFLEX表达式语言)的缩写,它是一种动态/静态的可嵌入的表达式语言和为Java平台提供Runtime(运行时)的语言。最初是作为一个应用程序框架实用程序的语

哎幽的成长 7921

FPGA上的YOLOv8加速实现:从Verilog到高层综合

YOLOv8 采用了更高效的C2f模块与轻量化Backbone结构,模型特征包括:结构紧凑、检测头融合高低层特征;支持Anchor-free检测机制;支持INT8、FP16低精度推理;计算密度高,适合FPGA并行优化。

2501_93174773的博客 918

java代码审计工具_Java代码审计汇总系列(六)——RCE

一、概述任意代码执行(Remote Code Execution)是危害最为严重的漏洞之一,挖掘难度也是相对高的,除了常见的文件上传漏洞,还有OS命令注入、表达式注入、模板注入、代码注入和第三方组件漏洞,下面依次讲解审计方法和技巧。二、分类挖掘技巧1、OS命令注入OS命令注入涉及执行系统命令,通过关键字定位执行命令的方法是否参数可控,常用的搜索关键字有:System|exec|passthru|...

weixin_42315341的博客 1829

时空双重机器学习在环境政策评估中的创新应用

因果推断是数据分析中的核心问题,特别是在环境政策评估领域。传统方法如差异分析法(DID)在处理时空维度上的复杂相关性时存在局限。机器学习技术,特别是双重机器学习(DML),通过分阶段建模有效解决了混杂变量问题。结合贝叶斯加性回归树(BART)的灵活建模能力,可以更准确地捕捉空间和时间模式。这种时空双重机器学习(ST-DML)方法在柬埔寨森林砍伐案例中表现出色,通过Wendland基函数有效处理了空间自相关问题。该技术框架不仅适用于环境政策评估,还可扩展至空气质量、水资源管理等其他领域,为政策制定提供更精准的

weixin_28685045的博客 347

用户画像标签维度_搭建电商平台用户画像标签体系

01 整体思路电商平台连接了卖家和买家两端,最终目的都是促进交易,从而追求更高的销售额。提高人货匹配度是促进交易的关键,而提高人货匹配度的关键就是“让买家找到想要的货物”。本文结合“人、货、场”理论模型,尝试建立电商平台的用户画像标签体系。02 三类标签用户在平台购物的整体流程可以概括为:进入平台、选择商品、下单付款。可以将该过程抽象为“人、货、场”。即用户通过什么途径进入什么商品的页面...

weixin_31668621的博客 1642

java ognl 性能,OGNL & MVEL &java调用 性能误会

一、OGNL & MVEL关于OGNL的使用参见: http://www.ibm.com/developerworks/cn/opensource/os-cn-ognl/关于MVEL的使用参见:http://mvel.codehaus.org/Getting+Started+for+2.0二、性能关于OGNL&MVEL两者的性能一开始看到 http://mvel.codehaus....

weixin_39581972的博客 619

嵌入式Linux Qt应用程序卡死问题分析记录

根据应用和系统层面的分析,软件功能异常和卡死现象的原因是系统控制台/dev/console阻塞导致依赖其的相关应用和命令异常。系统控制台/dev/console阻塞的原因还未确定,最近的软件版本和其他测试同事未出现该问题,所以很大可能是串口线的问题,待后续有进展了继续更新。

V10_x的博客 1648

MVC数据流传递原理+OGNL-->自己总结精辟!

1。OGNL相当于===JSTL中的EL表达式,两者功能相同,但Struts2中的OGNL更加强大。 2.OGNL与标签配合,在JSP页面可取出Action中属性值或四大对象中的值。 ----------------------------------- 引言:众所周知,在mvc中,数据是在各个层次之间进行流转是一个不争的事实。而这种流转,也就会面临一些困境,这些困境,是由于数据

洪文聊架构 1273

Cursor Agent模式下如何优雅切换conda环境运行Python脚本?3种实用方法实测

本文针对Cursor Agent模式下运行Python脚本时环境错配的痛点,实测了三种优雅切换conda环境的实用方法。通过Shell全局配置、项目级.cursorrc文件定制以及对话中直接指令,开发者可以确保AI助手在正确的虚拟环境中执行代码,从而提升开发效率和协作流畅度。

redis7keeper的博客 598

脑电时频分析I:谱分析

1、EEG频带划分 自发的EEG活动在活体大脑中持续存在,通常通过频率进行分类(也叫神经振荡活动) 特定频段的脑活动,即节律性的活动,具有特定的头皮分布和生物学意义 最后还有一个γ波,主要是指30hz~100hz的一个波段,通常这个波段也包含了噪声唁电的成分,比较难提取处理,比较少用到这个波段 这个波段主要是有可能躯体感觉皮层,进行一个多通道的感觉输入的i信号处理,比如我们同时处理视觉和听觉信号的处理,而且γ波与我们记忆的形成有关 除此之外,还有一个特殊的波段,8~12hz的Mu波段主要是特指我们

Kobe123brant的博客 1万+

表达式语言汇总

Ognl/MVEL/Aviator/JSEL/JEXL/JUEL/IKE  MVEL最初是Mike Brock的Valhalla项目的表达计算器。Valhalla本身是一个早期的Seam,就像为自动化“out of the box”web应用而生的框架,虽然Valhalla现在是休眠状态,但是MVEL仍旧作为活跃的开发项目向前发展。通常,我们会将MVEL同OGNL

每天积累一点,一年后你会发现,自己变化很大 1692

紫光展锐面试——FPGA/IC设计面试面经案例总结

自我介绍;研究生的主要研究方向是什么?为什么想要应聘数字芯片相关的工作?简单介绍下数字IC设计流程。逻辑综合主要做什么?你有实际做过逻辑综合工作吗?你了解SS corner和FF corner吗?综合时应该使用哪个corner?综合时需要考虑hold吗?为什么?提高时钟频率对setup和hold有什么影响?为什么?hvt、rvt/svt、lvt有什么区别?c40、c50是指什么概念?有什么区别?你对EDA工具有过了解吗?

FPGA/MATLAB学习教程/源码/项目合作开发 1565

mvel 调用java_java MVEL2/Spring EL表达式、直接调用、反射性能实测

importjava.io.Serializable;importjava.lang.reflect.Field;importjava.util.HashMap;importjava.util.Map;importorg.mvel2.MVEL;/*** Id 模型*/public class Id implementsSerializable {privateLong id;publicLong ...

weixin_34723270的博客 929

在 SAP ECC 中定义 ledger 时遇到 “Define exactly one leading ledger“(消息号 FAGL_LEDGER_CUST012)的错误

摘要:SAP系统要求必须且只能定义一个主导分类账(Leading Ledger)。当出现错误消息FAGL_LEDGER_CUST012时,需通过事务码FINSC_LEDGER或SPRO路径检查分类账配置,确保仅有一个分类账被标记为"LeadingLedger",其余设为"Non-leadingLedger"。主导分类账是SAP默认用于标准报表的核心分类账,修改配置需谨慎以免影响已有数据。若问题未解决,建议检查未完成配置或查阅SAP Notes获取解决方案。

金牌架构师 802

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

java ognl jar,Java SpEL、Ognl、MVEL2表达式Hook并记录小项目

这是一个专门Hook并记录Java表达式语言执行的Agent小程序。逻辑非常简单,适合初学者使用。所有的实现代码逻辑都在:org.javaweb.expression.Agent类里面。导入javaweb-expression并构建expression-agent模块。然后在程序运行之前加入以下jvm参数:-noverify -javaagent:/目标路径/expression-agent.ja...

weixin_36184718的博客 440

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Mvel模板性能测试

Mvel的性能很不错(Mvel主要竞争对手是OGNL),这个是官方提供的性能数据,因为Mvel使用asm,采用了编译成java字节码的方式,其本质的性能应该和java代码的性能是类似的。不过在实际测试器模板的时候,其性能并没有非常突出: 测试代码:主要比较了完成同一个功能,java、velocity、mvel需要的时间 velocity对SimpleNode进行Cache之后进行测试,同样Mv...

lostsky的专栏 1107

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

\(^_^)/ 表达式解析器(MVEL)

Jeval 在运行时解析计算静态和动态表达式;支持数学,布尔,字符串,函数表达式;支持大部分的数学和布尔运算符;支持自定义函数;支持嵌套函数;支持解析;支持自定义变量解析器; 官网:http://jeval.sourceforge.net 不支持嵌套变量   jexel 处理大部分的数学公式和字符串,通过继承接口来实现个人所需的运算;支持自定义变量解析器;该项目一直在更新,最近一次...

yanguz的专栏 2642

java mvel_你的Java开发工具包有没有MVEL?

MVEL是什么MVEL最初是Mike Brock的Valhalla项目的表达计算器。Valhalla本身是一个早期的Seam,就像为自动化“out of the box”web应用而生的框架,虽然Valhalla现在是休眠状态,但是MVEL仍旧作为活跃的开发项目向前发展。通常,我们会将MVEL同OGNL、JEXL、JUEL这样的项目作对比;不论是性能、特性还是易用性,尤其是集成方面,MVEL都已经...

weixin_35813719的博客 955

Mvel 2.0 使用指南一 基础

MVEL在很大程度上受到Java语法的启发,作为一个表达式语言,也有一些根本的区别,旨在更高的效率,例如:直接支持集合、数组和字符串匹配等操作以及正则表达式。 MVEL用于执行使用Java语法编写的表达式。除了表达语言之外,MVEL还可用作配置和字符串构造的模板语言。MVEL2.x表达式包含以下部分的内容:属性表达式布尔表达式方法调用变量赋值函数定义1. 基本语法MVEL 是一种基于Java语法,

SmartSi 3万+

介绍一款基于MVEL简单规则引擎

参考原文A Really Simple But Powerful Rule EngineMVEL 介绍最近正好做到规则引擎相关的需求,于是就预研了一下,找到一些可以满足我需求的技术。首先会引入一个东西——MVEL,怎么定义MVEL表达式,参看MVEL Guide。来一段代码看一下MVEL的功能,首先引入MVEL解析库: compile 'org.mvel:mvel2:2.3.2.Final'

jiaobuchong的专栏 9943

mvel语法指南

mvel受到了java语法的启发,但是存在一些根本性的差异,mvel旨在使其成为更有效的表达式语言.比如直接支持集合、数组和字符串匹配,正则表达式的运算操作等.         mvel2.x有以下几个部分组成:  Property expressionsBoolean expressionsMethod invocationsVariable assignmentsFunction de

y461517142的专栏 2万+

ANTLR Aviator语法引擎对比

ANTLR、Aviator、JEXL、MVEL、Groovy、JavaCC、JFlex、CUP 和 Parboiled 的详细对比表:

杨海吉 1228

Ognl/MVEL/Aviator/JSEL 表达式引擎执行效率对比

为了配合一下JSEL的发布推广,做了一下性能测试。 说实在的,真不想做这类测试,太无趣了。 首先说明一下,这个表达式测试并不专业,我只是随便拿了一下我们 飞行大亨 Aviator的几个用例随便做的一个测试,吧数据记录一下,希望对大家有个参考价值: 对比的表达式系统有: 老牌的Ognl(老到网站都找不到了) 新来的MVEL 国产的Aviator 目前最...

轻轻草原 4285

表达式引擎Mvel

MVEL(MVFLEX Expression Language)是一种简单、轻量级的表达式语言,主要用于Java环境。它类似于JSP的EL(ExpressionLanguage)和OGNL(Object-Graph Navigation Language),但具有更小的体积和更简单的语法。MVEL的主要特点包括:1.轻量级:MVEL的体积小,可以快速集成到项目中。2.易于使用:其语法直观,易于学习和使用。3.强大的功能:支持多种类型的表达式,包括算术、逻辑、字符串操作等。4.集成性。

river106的博客 1629

OGNL & MVEL &java调用 性能误解

一、OGNL &amp; MVEL 关于OGNL的使用参见: http://www.ibm.com/developerworks/cn/opensource/os-cn-ognl/ 关于MVEL的使用参见:http://mvel.codehaus.org/Getting+Started+for+2.0   二、性能 关于OGNL&amp;MVEL两者的性能一开始看到 http://mv...

iteye_17060的博客 1207
上一篇: Wade复出,但热火被指定强队认证机构山猫击败
下一篇: 喜新厌旧的后果
eyejavaeye
博客等级 码龄20年 74粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值