12.18 Enjoy 4.8 發佈,性能碾壓 Freemarker、Velocity、Thymeleaf

Enjoy Template Engine 採用獨創的 DKFF (Dynamic Key Feature Forward) 詞法分析算法以及獨創的DLRD (Double Layer Recursive Descent) 語法分析算法,極大減少了代碼量,降低了學習成本,並提升了用戶體驗。

與以往任何一款 java 模板引擎都有顯著的不同,極簡設計、獨創算法、極爽開發體驗,從根本上重新定義了模板引擎,這裡是首版發佈時的盛況,傳送門:JFinal 3.0 發佈---https://www.oschina.net/news/81225/jfinal-3-0-released,重新定義模板引擎

Enjoy 模板引擎專為 java 開發者打造,所以堅持兩個核心設計理念:一是在模板中可以直接與 java 代碼通暢地交互,二是儘可能沿用 java 語法規則,將學習成本降到極致。

因此,立即掌握 90% 的用法,只需要記住一句話:JFinal 模板引擎表達式與 Java 是直接打通的。

本次 Enjoy 4.8 最重要的改進是引入動態編譯技術性能提升 12.9%,性能碾壓 Freemarker、Velocity、Thymeleaf, 以下是 Intel Core i7 2.2G 機器上的性能測試結果:

Enjoy 4.8 發佈,性能碾壓 Freemarker、Velocity、Thymeleaf

Enjoy 的性能是 Thymeleaf 的 9.68 倍,是 Freemarker 的 3 倍,是 Velocity 的 2.86 倍,由於 Freemarker、Velocity、Thymeleafe 不支持 byte 模式,以上僅測試了 char 模式,在 byte 模式下 enjoy 性能將領先更多倍數。

以上測試使用 Java 基準測試框架 JMH,測試源碼:

https://gitee.com/jfinal/template-benchmark

注意:Enjoy 的運行時編譯技術仍然支持動態類型,某些模板引擎在使用 asm/cglib 運行時修改字節碼優化性能以後不再支持動態類型,是得不償失的做法,因為動態類型是現代模板引擎必須的特性

Enjoy 4.8 changelog:

1:新增 FastFieldGetter,支持動態類型的前提下性能提升 12.9%

2:添加 Engine.setFastMode(boolean),用於配置極速模式

3:新增 addDirective(.., .., boolean keepLineBlank) 方法,支持指令獨佔一行時保留前後空白字符:與輸出指令 #() 行為一樣

4:#date、#number、#escape 等輸出型指令,配置成 keepLineBlank = true

5:優化註釋對輸出格式的影響,註釋與指令處於同一行時保留行尾的換行字符(註釋處在獨立行時無此問題)

6:優化 FastStringWriter 性能

7:ByteWriter、CharWriter 遞歸優化為 while 循環

8:優化 #escape 指令性能,StringBuilder 字符串拼接改為直接向 Writer 輸出

9:輸出指令 Output 去掉對 Boolean 類型的判斷

10:添加 Engine.removeSharedObject(...) 方法,可配合 addSharedObject(...) 支持動態切換共享對象,適用更多應用場景

11:添加 JdkEncoderFactory 方便配置 Engine.setToJdkEncoderFactory() 支持 utf8mb4 編碼的 emoji 表情

12:改進 Utf8Encoder,在極端情況下碰到無法編碼的字符時,拋異常改為輸出問號,提升用戶體驗

13:EngineConfig.getSharedObjectMap() 改為 public 可見性

14:Template 添加無參 renderToString() 方法

15:添加 NullMethodInfo,簡化代碼提升性能

16:Scope 中的 getGlobal、setGlobal、removeGlobal 支持頂層 data 為 null

17:#set 系列指令放開對於自增、自減表達式的使用限制

碼雲地址:https://gitee.com/jfinal/enjoy


文章轉載自 OSCHINA 社區 [http://www.oschina.net]

本文標題:Enjoy 4.8 發佈,性能碾壓 Freemarker、Velocity、Thymeleaf

本文地址:https://www.oschina.net/news/112156/enjoy-4-8-released


分享到:


相關文章: