From 521596a2d1aad0495a8908e873efbc8644d7fb7d Mon Sep 17 00:00:00 2001 From: Iurii Shchekochikhin Date: Wed, 5 Jun 2024 16:58:07 +0200 Subject: [PATCH] chore: add mode perfomance metrics --- .../benchmark/BenchmarkServiceImpl.java | 30 +++++++++++++------ .../core/engine/CobolLanguageEngine.java | 2 ++ 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/server/common/src/main/java/org/eclipse/lsp/cobol/common/benchmark/BenchmarkServiceImpl.java b/server/common/src/main/java/org/eclipse/lsp/cobol/common/benchmark/BenchmarkServiceImpl.java index d1e48c072d..b43edca700 100644 --- a/server/common/src/main/java/org/eclipse/lsp/cobol/common/benchmark/BenchmarkServiceImpl.java +++ b/server/common/src/main/java/org/eclipse/lsp/cobol/common/benchmark/BenchmarkServiceImpl.java @@ -41,23 +41,24 @@ public BenchmarkSession startSession() { @Override public List getMeasurements() { return benchmarkSessions.stream() - .flatMap(s -> s.getMeasurements().stream()) - .collect(Collectors.toList()); + .flatMap(s -> s.getMeasurements().stream()) + .collect(Collectors.toList()); } @Override public List toJsons() { Gson gson = new Gson(); return benchmarkSessions.stream() - .flatMap(s -> s.getMeasurements().stream()) - .map(gson::toJsonTree) - .collect(Collectors.toList()); + .flatMap(s -> s.getMeasurements().stream()) + .map(gson::toJsonTree) + .collect(Collectors.toList()); } @Override public void logTiming() { benchmarkSessions.forEach(this::logTiming); } + public void logTiming(BenchmarkSession benchmarkSession) { Collection measurements = benchmarkSession .getMeasurements(); @@ -71,9 +72,12 @@ public void logTiming(BenchmarkSession benchmarkSession) { LOG.info("Write performance data into: " + path); Files.write(path, Collections.singleton(createHeaderLine(measurements)), StandardOpenOption.CREATE); } - Files.write(path, Collections.singleton(createTimingLine(measurements, + String timingLine = createTimingLine(measurements, benchmarkSession.attr("uri"), - Integer.parseInt(benchmarkSession.attr("size")))), StandardOpenOption.APPEND); + benchmarkSession.attr("language"), + Integer.parseInt(benchmarkSession.attr("lines")), + Integer.parseInt(benchmarkSession.attr("size"))); + Files.write(path, Collections.singleton(timingLine), StandardOpenOption.APPEND); } catch (IOException e) { LOG.debug(e.getMessage(), e); } @@ -89,14 +93,18 @@ private String createHeaderLine(Collection measurements) { line.append(","); line.append("Total time"); line.append(","); + line.append("Language"); + line.append(","); + line.append("Lines"); + line.append(","); line.append("Size"); return line.toString(); } - private String createTimingLine(Collection measurements, String url, int size) { + private String createTimingLine(Collection measurements, String url, String languageId, int lines, int size) { StringBuilder line = new StringBuilder(url); long total = 0; - for(Measurement m: measurements.stream().sorted(Comparator.comparing(Measurement::getId)) + for (Measurement m : measurements.stream().sorted(Comparator.comparing(Measurement::getId)) .collect(Collectors.toList())) { line.append(","); line.append(m.getTime()); @@ -105,6 +113,10 @@ private String createTimingLine(Collection measurements, String url line.append(","); line.append(total); line.append(","); + line.append(languageId); + line.append(","); + line.append(lines); + line.append(","); line.append(size); return line.toString(); } diff --git a/server/engine/src/main/java/org/eclipse/lsp/cobol/core/engine/CobolLanguageEngine.java b/server/engine/src/main/java/org/eclipse/lsp/cobol/core/engine/CobolLanguageEngine.java index dbb550081b..71bd9b39d6 100644 --- a/server/engine/src/main/java/org/eclipse/lsp/cobol/core/engine/CobolLanguageEngine.java +++ b/server/engine/src/main/java/org/eclipse/lsp/cobol/core/engine/CobolLanguageEngine.java @@ -158,6 +158,8 @@ public AnalysisResult run( StageResult result = pipelineResult.getLastStageResult(); session.attr("uri", ctx.getExtendedDocument().getUri()); + session.attr("language", ctx.getLanguageId().getId()); + session.attr("lines", String.valueOf(ctx.getExtendedDocument().toString().split("\n").length)); session.attr("size", String.valueOf(ctx.getExtendedDocument().toString().length())); session.attr("result", result.stopProcessing() ? "stopped" : "done"); benchmarkService.logTiming();