精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
作者 | 正文 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
发表时间:2012-07-01
最后修改:2012-07-01
beetl(http://beetl.sourceforge.net/)好不好,先比一下功能,拿目前最流行的Freemarker来做比较
通过下列表格,可以看出绝大部分功能, beetl 都是支持的
东西好不好,再比一下性能,那被公认为性能良好的Freemarker做比较 性能比较单线程:
还是以常用模板为准(大小6K ),循环渲染50000 次,需要时间(毫秒为单位)如下
Beetl1.2M1
解释执行方式(普通模式),运行三次,分别 1356,1365,1348 简而言之,对beetl 做运行时编译,byte 输出设定后,渲染5 万次6K 的模板,性能如下
及时不对beetl 做任何优化,性能也与Freemarker 持平
最后,向给位有志从事开源开发的朋友号召,无论你是工作10+年的老手,还是在学习就读的学生,如果愿意从事beetl开发和维护,我非常欢迎。我用了很多业余的精力去一个人搞一个开源的方方面面的工作,感到非常费神。我希望找一个能力突出,愿意去维护beetl开源的人。有想法可以留言。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
返回顶楼 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
发表时间:2012-07-01
看了一下,明显的比较“现代”,用anltr实现的此词法、语法分析。随手翻开一个类Jdk16Javac.java。。我居然看到了ex.printTrack(),然后我决定不再看。
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
返回顶楼 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
发表时间:2012-07-02
fireflyc 写道 看了一下,明显的比较“现代”,用anltr实现的此词法、语法分析。随手翻开一个类Jdk16Javac.java。。我居然看到了ex.printTrack(),然后我决定不再看。
你能看一下代码,还是不错的,很多人都评价过我写的代码,其中一个最有意义的评价就是重构CommonTreeNode,针对每个Node类型实现俩个方法,用于运行时,和编译时俩种模式。这会极大提高维护性,这也是我重构计划一部分。 你不再看理由无非是你觉得beetl实现比较简单,这很好,能让人看得懂也是写代码的一个要求。 但你看的 Jdk16Javac.java 是一个边缘类,如果我没有猜错,你应该只看了你能看的懂的,那么你认为什么情况下回抛出Exception,我应该怎么做?我想你不会回避论坛里的讨论 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
返回顶楼 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
发表时间:2012-07-02
我觉得应该往外抛,作为一个framework自己把异常吃掉。。会可怕的。包一下抛出去。
我看得出这个类是一个边缘的,随手翻到而已。这个不能成为否定一个东西的理由,但是却足够让我不再感兴趣。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
返回顶楼 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
发表时间:2012-07-02
Beetl双引擎,(兼顾代码生成和高并发web)。如果编译class过程中出现任何错误,都转为解释执行,这也是不抛给用户的原因
还有,此处catch的异常是编译源代码可能出现的异常,这通常是环境问题,如classpath里没有包含jdk的编译类。这在第一次运行的时候就能检测出来,不会在线上环境出现。这也是我不想处理的原因 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
返回顶楼 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
发表时间:2012-07-02
哦,看来我理解错了。我没有仔细看,当时的直觉是这个是纯解释性的,而这个类存在的意义或许是为了运行模板引擎嵌入的java代码。
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
返回顶楼 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
浏览 4088 次