Speed up java parsing a bit

This commit is contained in:
BoykoAlex
2022-02-15 21:34:26 -05:00
parent ebdfbf27a8
commit 183391e4d0
2 changed files with 12 additions and 3 deletions

View File

@@ -493,13 +493,17 @@ public class ORAstUtils {
}
public static List<CompilationUnit> parse(JavaParser parser, Iterable<Path> sourceFiles) {
List<CompilationUnit> cus = parser.parse(sourceFiles, null, new InMemoryExecutionContext());
InMemoryExecutionContext ctx = new InMemoryExecutionContext();
ctx.putMessage(JavaParser.SKIP_SOURCE_SET_TYPE_GENERATION, true);
List<CompilationUnit> cus = parser.parse(sourceFiles, null, ctx);
List<Result> results = new UpdateSourcePositions().doNext(new MarkParentRecipe()).run(cus);
return results.stream().map(r -> r.getAfter() == null ? r.getBefore() : r.getAfter()).map(CompilationUnit.class::cast).collect(Collectors.toList());
}
public static List<CompilationUnit> parseInputs(JavaParser parser, Iterable<Parser.Input> inputs) {
List<CompilationUnit> cus = parser.parseInputs(inputs, null, new InMemoryExecutionContext());
InMemoryExecutionContext ctx = new InMemoryExecutionContext();
ctx.putMessage(JavaParser.SKIP_SOURCE_SET_TYPE_GENERATION, true);
List<CompilationUnit> cus = parser.parseInputs(inputs, null, ctx);
List<Result> results = new UpdateSourcePositions().doNext(new MarkParentRecipe()).run(cus);
return results.stream().map(r -> r.getAfter() == null ? r.getBefore() : r.getAfter()).map(CompilationUnit.class::cast).collect(Collectors.toList());
}

View File

@@ -119,6 +119,7 @@ public class ORCompilationUnitCache implements DocumentContentProvider, Disposab
private JavaParser loadJavaParser(IJavaProject project) {
try {
return javaParsers.get(project, () -> {
logger.info("CU Cache: Creating new Java parser for project " + project.getElementName());
List<Path> classpath = getClasspathEntries(project).stream().map(s -> new File(s).toPath()).collect(Collectors.toList());
JavaParser jp = JavaParser.fromJavaVersion().build();
jp.setClasspath(classpath);
@@ -205,9 +206,13 @@ public class ORCompilationUnitCache implements DocumentContentProvider, Disposab
}
});
long start = System.currentTimeMillis();
CompilationUnit compilationUnit = ORAstUtils.parseInputs(javaParser, List.of(input)).get(0);
System.out.println("Parse took: " + (System.currentTimeMillis() - start) + " for " + uri);
logger.info("CU Cache: created new AST for {}", uri.toString());
return ORAstUtils.parseInputs(javaParser, List.of(input)).get(0);
return compilationUnit;
});