性能可以媲美Java的表達式引擎:Fel 0.7.1發布
簡 介
Fel(Fast Expression Language)是開放的、高效的、輕量級的表達式語言。擁有解釋執行和編譯執行雙引擎。Fel在編譯執行時,做了很多優化,適合處理海量數據。Fel擴展性強,用戶可以定制Fel執行時的眾多環節,以滿足需求。Fel學習門檻非常低,基本上可以做到拿來即用,即使是二次開發,也非常簡單。Fel基于Java1.5開發,適用于Java1.5及以上版本。
Fel是輕量級的高效的表達式計算引擎。
Fel在源自于企業項目,設計目標是為了滿足不斷變化的功能需求和性能需求。
Fel是開放的,引擎執行中的多個模塊都可以擴展或替換。Fel的執行主要是通過函數實現,運算符(+、-等都是Fel函數),所有這些函數都是可以替換的,擴展函數也非常簡單。
Fel有雙引擎,同時支持解釋執行和編譯執行。可以根據性能要求選擇執行方式。編譯執行就是將表達式編譯成字節碼(生成java代碼和編譯模塊都是可以擴展和替換的)
Fel基于Java1.5開發,適用于Java1.5及以上版本。
Fel有多快?
通常情況下,Fel-0.7.1每秒可以執行千萬次表達式。速度是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都非常簡單。
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("數量", 12);
- ctx.set("運費", 7500);
- Object result = fel.eval("單價*數量+運費");
- System.out.println(result);
輸出結果:67500
3:調用JAVA方法
- FelEngine fel = new FelEngineImpl();
- FelContext ctx = fel.getContext();
- ctx.set("out", System.out);
- fel.eval("out.println('Hello Everybody'.substring(6))");
輸出結果:Everybody
更多內容請參考:
項目主頁: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發布 最棒的Java HTML解析器
- JActor 2.2.0 RC3發布 Actor模式的Java實現
- LogicalDOC 6.4發布 Java開源文檔管理系統
- Resin 4.0.27發布 Java應用服務器
- LibrePlan 1.2.2發布 Java開源項目計劃和管理