阅读更多

2顶
0踩

开源软件
Fel是轻量级的高效的表达式计算引擎。

Fel在源自于企业项目,设计目标是为了满足不断变化的功能需求和性能需求。

Fel是开放的,引擎执行中的多个模块都可以扩展或替换。Fel的执行主要是通过函数实现,运算符(+、-等都是Fel函数),所有这些函数都是可以替换的,扩展函数也非常简单。

Fel有双引擎,同时支持解释执行和编译执行。可以根据性能要求选择执行方式。编译执行就是将表达式编译成字节码(生成java代码和编译模块都是可以扩展和替换的)。

Fel基于Java1.5开发,适用于Java1.5及以上版本。

Fel有多快?

通常情况下,Fel-0.8每秒可以执行千万次表达式。速度是Jexl-2.0的20倍以上。

性能可与Java媲美。目前还没有发现开源的表达式引擎比Fel快。

具体的测试数据请参见:http://code.google.com/p/fast-el/wiki/Performance

为何要使用Fel?


  • Fel语法和API非常简单,语法与Java基本相同,几乎没有学习成本。
  • Fel非常快,上面已经做了简单说明。
  • Fel整个包只有300多KB。
  • Fel可以非常方便的访问数组、集合、Map的元素和对象的属性。
  • Fel可以非常方便的调用对象的方法和类方法(如果这些还不够,可以添加自定义函数)。
  • 扩展Fel非常容易,扩展和修改Fel都非常简单。
项目主页http://code.google.com/p/fast-el/

下载Felhttp://fast-el.googlecode.com/files/fel-all-0.8.tar.gz

备注:附件为性能测试类,发布包中包含此类。

欢迎交流!
2
0
评论 共 12 条 请登录后发表评论
12 楼 w2c2y2 2014-01-19 21:49
楼主如果是真正开源的,应该也将Fel.g文件也开源出来啊。
11 楼 lotusyu 2012-11-16 10:24
delicatemoon 写道
表示 只对Fel.g感兴趣..., 能不能也开源出来?

请加群,群里的资料多一些
10 楼 delicatemoon 2012-11-16 09:47
表示 只对Fel.g感兴趣..., 能不能也开源出来?
9 楼 key232323 2012-11-15 10:52
我觉得应该这么做性能测试——
代码如下


package testexp;

import java.util.HashMap;
import java.util.Map;

import com.greenpineyu.fel.Expression;
import com.greenpineyu.fel.FelEngine;
import com.greenpineyu.fel.FelEngineImpl;
import com.greenpineyu.fel.context.ArrayCtxImpl;
import com.greenpineyu.fel.context.FelContext;

import junit.framework.TestCase;

public class TestFel extends TestCase {
static FelContext ctx = null;
static Expression expObj = null;
static FelEngine engine = new FelEngineImpl();

static {
Map<String, Object> vars = new HashMap<String, Object>();
// vars.put("i", 100);
// vars.put("pi", 3.14d);
// vars.put("d", -3.9);
// vars.put("b", (byte) 4);
// vars.put("bool", false);
// final Map<String, Integer> m = new HashMap<String, Integer>();
// m.put("d", 5);
// vars.put("m", m);
// vars.put("s", "hello world");
ctx = new ArrayCtxImpl(vars);

final String str = "1000+100.0*99-(600-3*15)%(((68-9)-3)*2-100)+10000%7*71";
expObj = engine.compile(str, ctx);
}

public void testExecuteExp() {
expObj.eval(ctx);
}
}


package testexp;

import junit.framework.TestCase;

public class TestJavaExp extends TestCase {
public void testExecuteExp() {
double result = 1000 + 100.0 * 99 - (600 - 3 * 15) % (((68 - 9) - 3) * 2 - 100) + 10000 % 7
* 71;
}
}


package testexp;

import org.punit.runner.ConcurrentRunner;

public class Runner {
public static void main(String[] args) {
int threadNum = 100;
new ConcurrentRunner(threadNum).run(TestFel.class);
new ConcurrentRunner(threadNum).run(TestJavaExp.class);
}
}

下面是结果:(p-unit)

[concurrent] Starting testexp.TestFel
testexp.TestFel
testExecuteExp() - [0.008311ms]
total: 1, failures:0 (GREEN) - 351.173334ms
[concurrent] Starting testexp.TestJavaExp
testexp.TestJavaExp
testExecuteExp() - [0.006356ms]
total: 1, failures:0 (GREEN) - 13.726047ms

还是Java快么

8 楼 rensanning 2012-11-15 10:05
关于性能测试,PerformanceTest的测试Case写的是有问题的,不该把compile方法放在循环外。简单测试了一下计算式,对于“1000+100.0*99-(600-3*15)%(((68-9)-3)*2-100)+10000%7*71”,JDK、JEXL、JEval算出来的都是“11181.0”,只有Fel算出的是“11181”。而这种计算式JDK基本用时为0.

7 楼 key232323 2012-11-15 09:59
hlylove 写道
啥意思啊,用java开发的东西性能可媲美java?

我刚才写错了

是“比Java快”——我在http://code.google.com/p/fast-el/wiki/Performance
看到耗时,java更多,这是什么缘故??
6 楼 hlylove 2012-11-15 09:38
啥意思啊,用java开发的东西性能可媲美java?
5 楼 key232323 2012-11-15 09:20
为什么不java还快?是编译通过了特殊优化么?
4 楼 晨星★~雨泪 2012-11-15 00:13
java门徒CZP 写道
java的正则本来就慢,还媲美java的正则????????

表达式 == 正则表达式?
3 楼 java门徒CZP 2012-11-14 20:53
java的正则本来就慢,还媲美java的正则????????
2 楼 lotusyu 2012-11-14 20:36
chenfeicqq 写道
"通常情况下,Fel-0.8每秒可以执行千万次表达式。速度是Jexl-2.0的20倍以上。 "

这个数据测试使用的机器配置是什么样的?

普通的I3笔记本,具体请看http://code.google.com/p/fast-el/wiki/Performance
1 楼 chenfeicqq 2012-11-14 20:11
"通常情况下,Fel-0.8每秒可以执行千万次表达式。速度是Jexl-2.0的20倍以上。 "

这个数据测试使用的机器配置是什么样的?

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Fel Javael表达式引擎

    Fel轻量级的高效的表达式计算引擎。 Fel在源自于企业项目,设计目标是为了不断变化的功能需求和性能需求.文档中有个别错误,但不影响阅读

  • java 表达式引擎 效率最高_性能可以媲美Java的表达式引擎:Fel 0.7.1发布

    简 介Fel(Fast Expression Language)是开放的、高效的、轻量级的表达式语言。拥有解释执行和编译执行双引擎。Fel在编译执行时,做了很多优化,适合处理海量数据。Fel扩展性强,用户可以定制Fel执行时的众多环节,以...

  • 表达式引擎fel-0.9版本

    Fel表达式计算引擎0.9版本

  • java fel_Java表达式引擎fel/groovy/expression4j/java脚本引擎的性能对比【原创】

    选用了一些常用的表达式引擎计算方案,包含:java脚本引擎(javax/script)、groovy脚本引擎、Expression4j、Fel表达式引擎。其中java脚本引擎使用了解释执行和编译执行两种方式、groovy脚本只采用了编译执行(解释执行...

  • 高速 Fel表达式引擎

    高速 Fel表达式引擎 。类似ognl 速度很快。 性能很高

  • java 表达式 引擎_Java表达式引擎 Aviator 2.1.1 发布

    Java 表达式解释引擎——aviator发布2.1.1,主要做的改进如下:1,性能改进,最新的性能测试表明aviator的性能已经接近甚至超过Groovy 1.8。具体请看这个性能测试报告,当然,性能上跟Fel还是有比较大的差距,这主要...

  • Fel表达式引擎

    Fel表达式引擎

  • 性能可以媲美Java的表达式引擎——Fel 0.7.1 发布

    介绍在这里:http://code.google.com/p/fast-el/ 表达式很清晰,性能可以自己测试。

  • java fel_FEL表达式的用法

    Fel是开放的,引擎执行中的多个模块都可以扩展或...编译执行就是将表达式编译成字节码(生成java代码和编译模块都是可以扩展和替换的)FEL可以进行算数运算以及逻辑运算,也可以调用类的静态方法、非静态方法。只需...

  • java fel_Fel是轻量级的高效的表达式计算引擎

    目前还没有发现开源的表达式引擎比Fel快。为何要使用Fel?Fel语法和API非常简单,语法与Java基本相同,几乎没有学习成本。Fel非常快,上面已经做了简单说明。Fel整个包只有200多KB。Fel可以非常方便的访问数组、集合...

  • 表达式引擎性能对比

    选择 5 种主要的表达式引擎进行性能对比,从而选择最优表达式引擎和最优方案。Janino、QLExpress、MEVL、JUEL、FEL。 当然,除了计算性能,还有考虑功能是否满足,以及是否有安全漏洞等,本文仅进行表达式引擎的性能...

  • java表达式引擎

    Fel(Fast Expression Language)是开放的、高效的、轻量级的表达式语言。拥有解释执行和编译执行双引擎。Fel在编译执行时,做了很多优化,适合处理海量数据。Fel扩展性强,用户可以定制Fel执行时的众多环节,以满足...

  • JAVA FEL表达式的使用

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、FEL是什么? 二、使用步骤 1.引入库 2.使用示例 数据格式 2.自定义函数 总结 前言 背景:用户行为...

  • 史上最为高效的表达式计算引擎Fel

    编译执行就是将表达式编译成字节码(生成java代码和编译模块都是可以扩展和替换的) Fel基于Java1.5开发,适用于Java1.5及以上版本。 Fel有多快? 通常情况下,Fel-0.7每秒可以执行千万次表达式(不包含编译时间)...

  • java计算模板_Java表达式计算-Fel

    Fel是支持表达式计算的一个库(java)。Fel支持解释执行和编译执行,可以根据性能要求选择执行方式。下面给出示例和性能测试数据:package datagene;import java.util.Random;import com.greenpineyu.fel.Expression;...

  • 流行的表达式引擎简单分析对比

    序 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最近来了个能耗监测的需求,也就是对设备...考虑到设备上报数据的量,肯定要考虑性能,所以先做表达式的选型。 一、依赖引入 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp

  • java表达式1 2_Aviator 2.1.1 发布,Java表达式引擎

    Java 表达式解释引擎——aviator发布2.1.1,主要做的改进如下:1,性能改进,最新的性能测试表明aviator的性能已经接近甚至超过Groovy 1.8。具体请看这个性能测试报告,当然,性能上跟Fel还是有比较大的差距,这主要...

  • 基于springboot大学生就业信息管理系统源码数据库文档.zip

    基于springboot大学生就业信息管理系统源码数据库文档.zip

  • 基于java的驾校收支管理可视化平台的开题报告.docx

    基于java的驾校收支管理可视化平台的开题报告

  • 原木5秒数据20241120.7z

    时间序列 原木 间隔5秒钟 20241120

Global site tag (gtag.js) - Google Analytics