[疑难] 请教词法分析器的性能
sleets
2011-03-26
最近在在尝试写基于D的Web模板,使用递归下降法写了个jade模板引擎。该引擎每秒可以编译10M~30M jade模板文件到D文件。
jade引擎需要嵌入一个sass的引擎, 使用低归下降法发现手动写起来很难实现,于是就尝试一些自动化的解决方案。 Dsource里有一个基于lalr文法的goldie引擎, 看了下文档觉得特性比较丰富,就尝试用gold来写scss词法分析器, 测试结果是分析90kb的纯css代码需要700ms, 还不包括语法树生成和执行的部分。 看了goldie的代码,发现使用了很多数组操作,应该很影响性能。于是从写了个基于struct的手动管理内存的gold引擎,结果分析100kb的css还是需要150ms。 怀疑DMD不给力,切换到linux64下使用最新的GDC, 结果性能更差,分析4kb需要3秒。 yacc似乎就是基于lalr的,网上没看到抱怨性能差的文章。不知道是那里出了问题。词法定义文件在这里,诸位给指点下,是不是改放弃lalr。 |
|
hqs7636
2011-03-27
Goldie Parsing System v0.4 Released - Now for D2
http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D.announce&article_id=20299 Goldie 最近更新很频繁,你去问问作者看应该更清楚 |
|
hqs7636
2011-03-27
你能否直接搞个RoR + EJB ?
|
|
sleets
2011-03-28
RoR做不到, 计划写个小框架,基于D2。 静态把模板编译进去,灵活性和安全性差了点,但是错误检查比较强。
放弃gold了, 下载了他们站点的汇编写的引擎,速度也是很慢。100kb的分析要100ms。 这样的速度用在Web上太差了, 在nodejs用正则写都比它快很多。 |
|
hqs7636
2011-03-28
如果有网络库了会不会做?好像有人在做网络库了
|
|
libray
2011-04-07
|
|
libray
2011-04-07
[img][/img]
|
|
libray
2011-04-07
<html>12131312</html> |