我使用JavaParser v3.13.5从表达式构建AST。我注意到解析表达式--即使是像Objects.equals(a, b)这样简单的表达式--花费了太多的时间(~0.15 s)。除了ParserConfiguration之外,还有什么选项可以加速解析吗?
编辑
复制结果的代码:
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);是否有什么方法可以被滥用来抑制一些不必要的验证或其他什么?
发布于 2020-11-14 18:16:33
实际上(JP版本3.16.3)需要2983.4奈米秒来解析这个语句。
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);发布于 2020-11-04 08:57:05
也许您可以禁用LexicalPreservation,这在您的示例中没有使用。
https://stackoverflow.com/questions/55478919
复制相似问题