[疑难] 请教词法分析器的性能

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>
Global site tag (gtag.js) - Google Analytics