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

栏目: 软件资讯 · 发布时间: 6年前

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

    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 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 系列指令放开对于自增、自减表达式的使用限制

 


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

重构(影印版)

重构(影印版)

Martin Fowler / 中国电力出版社 / 2003-7-1 / 49.00元

随着对象技术应用越来越普及,软件开发社区出现了一个新的问题。缺乏经验的开发者编写出了大批设计较差的程序,导致这些应用程序非常低效,且难于维护和扩展。本书除了讨论重构的各种技巧之外,还提供了超过70个可行重构的详细编目,对如何应用它们给出了有用的提示;并以step by step的形式给出了应用每一种重构的指南;而且用实例展示了重构的工作原理。这些示例都是用Java语言写成的,但其中的思想却可以运用......一起来看看 《重构(影印版)》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

SHA 加密
SHA 加密

SHA 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换