MVEL和FEL简易对比

MVEL 和 FEL 是什么? 百度就知道哈。

EL是Expression Language 表达式语言,主要作用是动态解析表达式的引擎。

 

使用场景:

对于一些在代码中动态加载xml资源等,资源是简单的算术表达式+变量。就不需要用到脚本解析引擎(lua等),可以直接用EL。

如:

<item name="width">50</item> 这个width数值是固定50

<item name="width">50+button_width*3</item> 这个width数据就会根据代码中button_width这个变量乘以3再加50 计算后动态赋值给width

当然EL还支持括号,开方,对数,指数等数学运算,所以可以很方便的进行动态计算。

 

EL的解析有: 编译模式 和 解析模式 (FEL支持两种模式 MVEL好像仅支持解析模式)

编译模式:通过调用sun jdk1.6以上的tools.jar库,将表达式动态编译为.class ,直接运行。优点:效率高很多,缺点:需要库支持(android不支持)。

解析模式:由于android不支持编译模式,故只能用解析模式来实现表达式动态编译。经过比对MVEL的效率是FEL的4-8倍。这个数据是在lenovo s960上测试的,代码就是用不同的表达式,累计运算1000~10000次平均得出,所以建议在android上开发可以直接上MVEL,当然如果后期android支持编译模式了。毫无疑问,还是要用FEL。FEL是国人开发,先支持下。

你可能感兴趣的:(表达式,MVEL,fel)