- 浏览: 1268630 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
ypzhangyx:
这要是个小白,看你的文章就得哭啊
AIX安装weblogic并部署web应用 -
cobly1837:
java encoding参考 -
lvwenwen:
very good! mark
银行业务细分,商业银行业务学习(二) -
waiting:
买过这3本书,的确有奇效!
读《火柴棒医生手记》,周尔晋奇人奇事 -
andy20008:
非NT服务修改JVM内存大小 与 NT服务修改JVM内存大小 ...
JIRA不完全手册
引用
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.
按照这个本意仅仅是想减少两个包的依赖..丝毫不提mvel的优越性能啊,我倒看中这一点,目前项目中的规则运算巨慢,不过主要原因是hibernate查询导致的...
下面是性能对比:
http://mvel.codehaus.org/Performance+of+MVEL
===============================================
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]
------------------------------------------------
评论
11 楼
cleverpig
2007-07-13
哪位同学知道如何使用MVEL啊?我想把它用做Object发射工具,看了一下API,感觉没有什么头绪。
10 楼
yimlin
2007-04-11
看起来不错!3.0的时候就在想要是drools可以支持ognl,那么可以用更为自然的模型设计了。现在更好了,不但支持了,还提高了效率!
9 楼
dada
2007-04-11
eyejava 写道
3.1应该有很大的变动,还是等他的文档更新再用吧。因为drl的语法肯定有新的简单的写法,这是我期待的。
关于el,就是表达式语言,google应该有很多内容。
hibernate的问题是因为做了全表的查询,然后把所有记录丢入drools 的working memory中,因为做了set-one-to-many的关联 导致非常多的查询,主要性能瓶颈在这个地方。
简单写法倒是没有,就是实用了不少,或者说作者兑现了很多承诺。
po对象直接扔到memory中会出现什么好玩的问题吗?
我项目里面drools处理的是核心业务的东西,为了规避风险不敢直接把po往memory里面放。
我能想到的问题:
1. 该对象的一部分关系不需要初始化,drools会不会在访问对象的时候“不小心”初始化了?
2. 高范式的数据模型控制不住对象的数量规模和层次,从而影响规则引擎的效率。就我在选型的时候做的一些简单性能测试而言,对象越“平”,层次越少性能越好,性能差距在10倍-100倍。
8 楼
dada
2007-04-11
我这里大约快了3ms,和一个规则集500ms+的耗时比较起来确实没有什么值得多提的。
7 楼
quaff
2007-04-10
引用
(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]
------------------------------------------------
ognl和mvel怎么编译?
6 楼
sonic_yj
2007-04-10
[quote="eyejava]
3.1应该有很大的变动,还是等他的文档更新再用吧。因为drl的语法肯定有新的简单的写法,这是我期待的。
关于el,就是表达式语言,google应该有很多内容。
hibernate的问题是因为做了全表的查询,然后把所有记录丢入drools 的working memory中,因为做了set-one-to-many的关联 导致非常多的查询,主要性能瓶颈在这个地方。
文档我找到了一个,M1变化确实很大,我已经在用了,From , Collect 都很好用,暂时还不知道有什么其他新元素。至于你文章写的性能问题,我还是不太理解。。
加载数据的问题我也有类似的困惑,因为可以用From,加载的数据到不一定全部加载,但是我也没确认到底一次加载效率高还是临时From加载效率高(目前我也就用到1w左右的数据量)我的感觉是透过Rule效率其实不低,不知道你涉及的数据量到底是什么样数量级的。至于one2many,基本上我个人不是太愿意用,感觉太逻辑了,写进去很难调整,而且这种东西Drools到底支持的如何,我还不太清楚,想听听你遇到的实际问题。
还有,似乎LHR里面无法直接使用From加载外部Fact的东东,不知道你遇到了么
rule
when
li:ArrayList(size > 0) from collect( ds.search(hql) )
then
....
end
3.1应该有很大的变动,还是等他的文档更新再用吧。因为drl的语法肯定有新的简单的写法,这是我期待的。
关于el,就是表达式语言,google应该有很多内容。
hibernate的问题是因为做了全表的查询,然后把所有记录丢入drools 的working memory中,因为做了set-one-to-many的关联 导致非常多的查询,主要性能瓶颈在这个地方。
文档我找到了一个,M1变化确实很大,我已经在用了,From , Collect 都很好用,暂时还不知道有什么其他新元素。至于你文章写的性能问题,我还是不太理解。。
加载数据的问题我也有类似的困惑,因为可以用From,加载的数据到不一定全部加载,但是我也没确认到底一次加载效率高还是临时From加载效率高(目前我也就用到1w左右的数据量)我的感觉是透过Rule效率其实不低,不知道你涉及的数据量到底是什么样数量级的。至于one2many,基本上我个人不是太愿意用,感觉太逻辑了,写进去很难调整,而且这种东西Drools到底支持的如何,我还不太清楚,想听听你遇到的实际问题。
还有,似乎LHR里面无法直接使用From加载外部Fact的东东,不知道你遇到了么
rule
when
li:ArrayList(size > 0) from collect( ds.search(hql) )
then
....
end
5 楼
eyejava
2007-04-10
sonic_yj 写道
正在用M1,不过不知道你说的这个东东什么东西,看起来应该是个很重大的调整,M1的文档又是一片空白,能说详细点么,帮助我这种刚入门的用户了解多一点。
BTW,你提到了一个Hibernate问题。能具体点么,是第一次加载环境变量的时候慢,还是说用From在规则内加载外部Fact的时候的问题?谢谢
3.1应该有很大的变动,还是等他的文档更新再用吧。因为drl的语法肯定有新的简单的写法,这是我期待的。
关于el,就是表达式语言,google应该有很多内容。
hibernate的问题是因为做了全表的查询,然后把所有记录丢入drools 的working memory中,因为做了set-one-to-many的关联 导致非常多的查询,主要性能瓶颈在这个地方。
4 楼
sonic_yj
2007-04-10
引用
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.
按照这个本意仅仅是想减少两个包的依赖..丝毫不提mvel的优越性能啊,我倒看中这一点,目前项目中的规则运算巨慢,不过主要原因是hibernate查询导致的...
正在用M1,不过不知道你说的这个东东什么东西,看起来应该是个很重大的调整,M1的文档又是一片空白,能说详细点么,帮助我这种刚入门的用户了解多一点。
BTW,你提到了一个Hibernate问题。能具体点么,是第一次加载环境变量的时候慢,还是说用From在规则内加载外部Fact的时候的问题?谢谢
3 楼
Readonly
2007-04-10
Mvel看起来不错,和ognl完全兼容,不知道为啥比ognl快那么多,下载下来研究一下...
这个在去年的webwork mail list上有讨论过:
http://forums.opensymphony.com/thread.jspa?threadID=44645
从xwork的代码结构来看,偶们需要弄一个ValueStack interface以及一个factory来创建OgnlValueStack或者MevlValueStack,实现上不难。
而且JIRA上面已经有人提交patch了
http://jira.opensymphony.com/browse/XW-461
http://issues.apache.org/struts/browse/WW-1566
差沙 写道
不知道这个对比权威不,另外考虑ww 能不能吧ognl换掉呢~~~
这个在去年的webwork mail list上有讨论过:
http://forums.opensymphony.com/thread.jspa?threadID=44645
从xwork的代码结构来看,偶们需要弄一个ValueStack interface以及一个factory来创建OgnlValueStack或者MevlValueStack,实现上不难。
而且JIRA上面已经有人提交patch了
http://jira.opensymphony.com/browse/XW-461
http://issues.apache.org/struts/browse/WW-1566
2 楼
差沙
2007-04-10
不知道这个对比权威不,另外考虑ww 能不能吧ognl换掉呢~~~
1 楼
rainlife
2007-04-10
从性能测试的结果来看,性能上面的优势太大了
发表评论
-
继续说代理:用apache给tomcat/weblogic设置代理
2009-08-14 14:03 6293mod_proxy 是Apache 自带的 模块使用代理技术来 ... -
mysql errorcode: 17的原因及解决
2009-04-09 16:22 3448Caused by: java.sql.SQLExceptio ... -
用foxit reader 3.0快速建立pdf书签
2009-02-12 12:33 8683foxit reader 2.3之后加入了自定义书签的功能,官 ... -
strokeit
2008-12-19 17:34 0http://www.wecycling.com/index. ... -
Cognos reportnet开启权限认证针对空报表拆分产生的exception是不同的
2008-12-17 15:50 3326未开启权限认证时,即 ... -
FT,有时候重新设定环境变量还得重启Windows机器
2008-11-25 11:46 2416一台windows 2003 server机器,安装了cogn ... -
ping Source quench received
2008-10-28 15:27 2598ping error "source requenc ... -
foxmail没法压缩邮箱的解决办法
2008-10-28 09:32 5238通过Gmail发送了几个超大的邮件,最大的一个有20万行 ... -
beyond compare3使用
2008-08-27 23:42 41641.比较文本数据差异。 文本数据指的是类似csv文件的数据、定 ... -
svn:ignore
2008-07-04 14:44 76601.已经在版本控制的目录或者文件是不能加入svn:ignore ... -
Foxmail邮件备份到Gmail
2008-05-20 17:21 6179Gmail不断增长貌似无限制的空间+强大的搜索功能 用于储存邮 ... -
spring bean继承的一个误解
2007-06-05 15:22 3016xxAction继承BaseAction,BaseAction ... -
Maven,想说爱你不容易..
2007-05-27 15:25 2170你用maven你会感觉很环保,但是网络不通的时候却又是无尽的烦 ... -
定时加载文件到数据库tips
2007-05-22 17:50 4444装载文本文件,oracle sqlldr是个好用的工具。 如 ... -
javafx,又一个applet?
2007-05-09 18:26 5351JavaOne 出来的东西,demo和文档:https://o ... -
xwork升级到1.2 反而多了些小问题
2007-04-18 19:12 25971.每调用一个action都给出几条警告: WARN [com ... -
在many-to-many的中间表中配置索引
2007-04-11 15:44 5026<set name="cards" ... -
喜新厌旧的后果
2007-04-10 15:43 2138一直用pl/sql dev 6.0好好的,但是看到最新版本都是 ... -
加班被锁,郁闷...
2007-04-05 20:25 3686等待解救中... -
SchemaUpdate 如何让它正确找schema?
2007-03-30 13:46 3151DB:oracle 9i 在同一个数据库实例里面有两个用户:C ...
相关推荐
之前学习jboss rules 只能自己一点点的啃英文用户指南,后来终于找到了中文版的翻译版本,真是高兴,立即奉献给大家,让对规则引擎感兴趣的朋友也能一堵为快。 内容摘要:JBoss Rules 的前身是Codehaus的一个开源...
本入门资料集锦涵盖了从基础到高级的多个方面,帮助初学者全面理解并掌握如何使用JBoss Rules进行规则管理。 首先,规则引擎是一种软件系统,它允许业务专家以易于理解和维护的规则语言定义业务规则,而不是让...
jboss rules 中文用户指南,mht文件,共十章。
### jBoss Rules 用户指南知识点详解 #### 一、规则引擎概念及背景 ##### 1.1 什么是规则引擎 规则引擎是一种软件系统,它能够基于一组预定义的规则来处理数据,进而推导出结论或者执行特定的操作。规则引擎的...
jboss rules 中文学习资料.chm
【JBoss Rules 初学实例】是针对Drools规则引擎的一个入门教程,适用于初次接触该框架的开发者。Drools是一款开源的业务规则管理系统,它允许开发人员以声明式的方式编写业务规则,使得复杂的逻辑处理变得更加简洁...
- **定义与背景**:Drools 是一个开源业务规则管理系统(Business Rule Management System, BRMS),它支持开发人员通过声明式编程来实现业务逻辑。Drools 由 JBoss 维护,并作为 Red Hat JBoss BRMS 的一部分。 - *...
本篇文章将指导你如何使用JBoss7.1和EJB3.1在Eclipse3.7环境中创建你的第一个EJB项目。EJB(Enterprise JavaBeans)是一种Java平台上的组件模型,用于构建可扩展的、可靠的、安全的企业级应用。JBoss是Red Hat公司...
标题《EJB3.1与JBoss7.1.1在eclipse的实现》意味着本文档将介绍如何使用EJB3.1标准在JBoss应用服务器7.1.1版本上进行企业级Java Bean(EJB)的开发,并通过Eclipse集成开发环境进行部署和测试。EJB3.1是一种用于简化...
JBOSSRULES使用文档
Drools JBoss Rules是JBoss企业中间件产品套件的一部分,它是一个基于Java平台的业务规则引擎(Business Rules Engine),它允许业务逻辑从业务应用程序中分离出来,并以一种易于管理和维护的方式呈现。Drools JBoss...
### Drools JBoss Rules 5.0 Developer's Guide #### 概述 《Drools JBoss Rules 5.0 Developer's Guide》是一本专为希望利用Drools平台开发基于规则的业务逻辑的开发者而编写的指南。本书由Michal Bali撰写,于...
《JBoss Drools Business Rules》是一本由 Paul Browne 编写的书籍,首次出版于2009年,该书旨在介绍如何利用 JBoss Drools 捕获、自动化及重用业务流程。本书版权属于 Packt Publishing,并在 Birmingham 和 Mumbai...
JBoss AS 7.1.0.Final是在Linux环境下运行的一款开源Java应用服务器,由Red Hat公司维护。这个版本发布于2012年,它引入了许多改进和新特性,旨在提供更快的启动速度、更高的性能以及更好的模块化。在这个环境中,...
在使用JBoss 3.2.1版本部署Web应用的过程中,遇到了一个长期存在的问题——内存占用过高,具体表现为即使对于规模不大、流量不多的站点,系统也经常需要消耗超过500MB的虚拟内存(即swap空间)。这个问题不仅增加了...
规则引擎 Drools-JBoss Rules 是一个强大的规则引擎,可以应用于各种领域,帮助企业更顺利地引入规则引擎,并提高规则引擎的附加价值。但是,它需要复杂的实现和维护,需要大量的计算资源,需要高级的技术人才。