簡體   English   中英

如何加速 JavaParser

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM