论坛首页 Java企业应用论坛

面向组合子编程实验-SQL组合查询条件的简单实现

浏览 37518 次
该帖已经被评为精华帖
作者 正文
   发表时间:2006-08-25  
Thanks Readonly for the code.

c.getParser()
这一步是combination,也耗费一点时间。
我修改了一下test code,因为我没有引入antlr。就测了一下不需要combination的情况。

        long start = System.currentTimeMillis();;
        for(int i = 0; i<20000; i++); {
            Calculator c = new Calculator();;            
            Object result = Parsers.runParser(src, c.getParser();, "Test");;
        }
        System.out.println(System.currentTimeMillis(); - start);;
               
        Calculator c = new Calculator();;            
        Parser p = c.getParser();;
        start = System.currentTimeMillis();;
        for(int i = 0; i<20000; i++); {
            Object result = Parsers.runParser(src, p, "Test");;
        }
        System.out.println(System.currentTimeMillis(); - start);;


20109
11250

2:1 左右。

这么说来,

JParsec : Antlr 应该是 3 : 1,  2.5 : 1 左右。
0 请登录后投票
   发表时间:2006-08-25  
松了一口气.看来性能差距还可以接受.本来就没有想过组合子的效率会比代码生成好.这个差距还算让我欣慰.当然,要是能再优化以下代码,把差距控制在50%以内就完美了。
还有,可能不同jvm的速度也会有差异。jparsec内部在back-track的时候会生成很多错误对象,这些错误对象只有到真正报错的时候才有用,所以当最终parse成功的时候,错误对象的创建都是浪费.我期望在gc优化比较好的jvm上这些错误对象的影响被大幅减小.
0 请登录后投票
   发表时间:2006-08-28  
一直很欣赏ajoo
从搽干劲 yan开始
希望有空可以加入
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics