您现在的位置是:首页 > 文章详情

Enjoy 4.8 发布,性能碾压 Freemarker、Velocity、Thymeleaf

日期:2019-12-18点击:527

    Enjoy Template Engine 采用独创的 DKFF (Dynamic Key Feature Forward) 词法分析算法以及独创的DLRD (Double Layer Recursive Descent) 语法分析算法,极大减少了代码量,降低了学习成本,并提升了用户体验。

    与以往任何一款 java 模板引擎都有显著的不同,极简设计、独创算法、极爽开发体验,从根本上重新定义了模板引擎,这里是首版发布时的盛况,传送门:JFinal 3.0 发布,重新定义模板引擎

    Enjoy 模板引擎专为 java 开发者打造,所以坚持两个核心设计理念:一是在模板中可以直接与 java 代码通畅地交互,二是尽可能沿用 java 语法规则,将学习成本降到极致。

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

    本次 Enjoy 4.8 最重要的改进是引入动态编译技术性能提升 12.9%,性能碾压 Freemarker、Velocity、Thymeleaf, 以下是 Intel Core i7 2.2G 机器上的性能测试结果:

    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://www.oschina.net/news/112156/enjoy-4-8-released
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章