性能可以媲美Java的表達式引擎:Fel 0.7.1發(fā)布
簡 介
Fel(Fast Expression Language)是開放的、高效的、輕量級的表達式語言。擁有解釋執(zhí)行和編譯執(zhí)行雙引擎。Fel在編譯執(zhí)行時,做了很多優(yōu)化,適合處理海量數(shù)據(jù)。Fel擴展性強,用戶可以定制Fel執(zhí)行時的眾多環(huán)節(jié),以滿足需求。Fel學習門檻非常低,基本上可以做到拿來即用,即使是二次開發(fā),也非常簡單。Fel基于Java1.5開發(fā),適用于Java1.5及以上版本。
Fel是輕量級的高效的表達式計算引擎。
Fel在源自于企業(yè)項目,設計目標是為了滿足不斷變化的功能需求和性能需求。
Fel是開放的,引擎執(zhí)行中的多個模塊都可以擴展或替換。Fel的執(zhí)行主要是通過函數(shù)實現(xiàn),運算符(+、-等都是Fel函數(shù)),所有這些函數(shù)都是可以替換的,擴展函數(shù)也非常簡單。
Fel有雙引擎,同時支持解釋執(zhí)行和編譯執(zhí)行??梢愿鶕?jù)性能要求選擇執(zhí)行方式。編譯執(zhí)行就是將表達式編譯成字節(jié)碼(生成java代碼和編譯模塊都是可以擴展和替換的)
Fel基于Java1.5開發(fā),適用于Java1.5及以上版本。
Fel有多快?
通常情況下,F(xiàn)el-0.7.1每秒可以執(zhí)行千萬次表達式。速度是Jexl-2.0的20倍以上。
性能可與Java媲美。
目前還沒有發(fā)現(xiàn)開源的表達式引擎比Fel快。
具體的測試數(shù)據(jù)請參見:http://code.google.com/p/fast-el/wiki/Performance。
為何要使用Fel?
- Fel語法和API非常簡單,語法與Java基本相同,幾乎沒有學習成本。
- Fel非常快,上面已經(jīng)做了簡單說明。
- Fel整個包只有300多KB。
- Fel可以非常方便的訪問數(shù)組、集合、Map的元素和對象的屬性。
- Fel可以非常方便的調(diào)用對象的方法和類方法(如果這些還不夠,可以添加自定義函數(shù))。
- 擴展Fel非常容易,擴展和修改Fel都非常簡單。
1:算術表達式:
- FelEngine fel = new FelEngineImpl();
- Object result = fel.eval("5000*12+7500");
- System.out.println(result);
輸出結果:67500
2:變 量
使用變量,其代碼如下所示:
- FelContext ctx = fel.getContext();
- ctx.set("單價", 5000);
- ctx.set("數(shù)量", 12);
- ctx.set("運費", 7500);
- Object result = fel.eval("單價*數(shù)量+運費");
- System.out.println(result);
輸出結果:67500
3:調(diào)用JAVA方法
- FelEngine fel = new FelEngineImpl();
- FelContext ctx = fel.getContext();
- ctx.set("out", System.out);
- fel.eval("out.println('Hello Everybody'.substring(6))");
輸出結果:Everybody
更多內(nèi)容請參考:
項目主頁:http://code.google.com/p/fast-el/
下載Fel:http://fast-el.googlecode.com/files/fel-all-0.7.1.jar
性能測試:http://code.google.com/p/fast-el/wiki/Performance
【編輯推薦】
- jsoup 1.6.2發(fā)布 最棒的Java HTML解析器
- JActor 2.2.0 RC3發(fā)布 Actor模式的Java實現(xiàn)
- LogicalDOC 6.4發(fā)布 Java開源文檔管理系統(tǒng)
- Resin 4.0.27發(fā)布 Java應用服務器
- LibrePlan 1.2.2發(fā)布 Java開源項目計劃和管理