[英]How to speed up JavaParser
我正在使用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);
是否有任何方法可以被覆蓋以抑制一些不必要的驗證或其他什么?
也許您可以禁用示例中未使用的 LexicalPreservation。
實際上(JP version 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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.