Enjoy 4.8 发布,性能碾压 Freemarker、Velocity、Thymeleaf
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 系列指令放开对于自增、自减表达式的使用限制
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
FastAdmin V1.0.0.20191212 发布,极速后台框架
V1.0.0.20191212 更新日志 新增 Bootstrap-table 分页跳转 新增邮箱/手机/公众号/普通文本四种验证码 新增后台列表选项卡切换支持普通文本框 新增 Fieldlist 支持自定义 HTML 标签 修复 Datetimepicker 不触发 fieldlist 响应的 BUG 修复角色组跨权限查看编辑的问题 修复角色组移动时不能为节点的子节点 修复分类管理中可将父 id 设置为自己的错误 修复安卓下图片无法上传的 BUG 修复附件类型筛选时多条件的 BUG 修复 Backend 基类无法捕获 Exception 异常的 BUG 修复 Form::checkboxs 名称生成错误的 BUG 修复超级管理员开关无权限的 BUG 优化面包屑获取方式 优化控制台切换时图表展示 官网:http://www.fastadmin.net/ 演示:http://demo.fastadmin.net/ 项目仓库:https://gitee.com/karson/fastadmin 在线开发文档:https://doc.fastadmin.net FastAdmin 是一款基于...
- 下一篇
Newbe.Mahua 1.18、2.4 发布,千星纪念版
近期,我们达成了成就“虚假的千星”(github 700 gitee 300)。为了庆祝和解决社区已经反馈的问题,我们发布了这个版本。 开篇一张图,功能全靠编。 QQ机器人平台意指那些支持通过QQ进行消息收发和群员软件平台。 使用该SDK开发可以实现一次开发,运行于多个不同QQ机器人平台平台的绝佳体验。 基于SDK开发,可以实现包含但不限于以下功能: QQ消息智能回复 通过QQ发送图片 QQ名片点赞 QQ群成员管理 @指定QQ群成员发送消息 点击此处开始你的第一个QQ机器人吧 版本亮点 恢复 QQLight QQLight 由于众所周知的原因已经升级到了 3.X 的 SDK,旧版本全部失效,现在我们更新了版本以重新支持。 更新其他平台的 API 由于其他平台的 API 也发生了若干变更,因此,我们也按照当前最新的情况更新了 API 。 升级注意 1.X 从 1.17版本直接更新全部的 Newbe.Mahua.* nuget 包,重新生成便可以。 升级过程中需要覆盖 build.bat 和 build.ps1 文件。若有自行定制的内容,请提前保留备份。 Rider 用户更新项目模板,只需...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS6,CentOS7官方镜像安装Oracle11G