首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何加快JavaParser的速度

如何加快JavaParser的速度
EN

Stack Overflow用户
提问于 2019-04-02 15:53:30
回答 2查看 336关注 0票数 0

我使用JavaParser v3.13.5从表达式构建AST。我注意到解析表达式--即使是像Objects.equals(a, b)这样简单的表达式--花费了太多的时间(~0.15 s)。除了ParserConfiguration之外,还有什么选项可以加速解析吗?

编辑

复制结果的代码:

代码语言:javascript
复制
JavaParser javaParser = new JavaParser(
        new ParserConfiguration()
                .setStoreTokens(false)
                .setAttributeComments(false)
                .setDoNotAssignCommentsPrecedingEmptyLines(true)
                .setIgnoreAnnotationsWhenAttributingComments(true)
                .setLexicalPreservationEnabled(true)
                .setPreprocessUnicodeEscapes(false)
                .setLanguageLevel(LanguageLevel.RAW)
                .setCharacterEncoding(Providers.UTF8));

String strExpr = "Objects.equals(a, b)";

long start = System.currentTimeMillis();
//Expression expr = StaticJavaParser.parseExpression(strExpr); // even slower...
ParseResult<Expression> parseResult = javaParser.parseExpression(strExpr); // slow...
long end = System.currentTimeMillis();

System.out.println((double) (end-start)/1000);

是否有什么方法可以被滥用来抑制一些不必要的验证或其他什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-14 18:16:33

实际上(JP版本3.16.3)需要2983.4奈米秒来解析这个语句。

代码语言:javascript
复制
 String code = "Objects.equals(a, b);";
 long start = System.nanoTime();
 Statement stmt = StaticJavaParser.parseStatement(code);
 long end = System.nanoTime();
 System.out.println((double) (end-start)/1000);
票数 1
EN

Stack Overflow用户

发布于 2020-11-04 08:57:05

也许您可以禁用LexicalPreservation,这在您的示例中没有使用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55478919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档