Skip to content

Commit 9ec94b0

Browse files
authored
Merge pull request #4170 from github/asgerf/comparison-names
Compare performance: Show names of query runs being compared
2 parents 85d3eca + b6bf184 commit 9ec94b0

File tree

4 files changed

+48
-24
lines changed

4 files changed

+48
-24
lines changed

extensions/ql-vscode/src/common/interface-types.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -420,8 +420,8 @@ export type ToComparePerformanceViewMessage = SetPerformanceComparisonQueries;
420420

421421
export interface SetPerformanceComparisonQueries {
422422
readonly t: "setPerformanceComparison";
423-
readonly from: PerformanceComparisonDataFromLog;
424-
readonly to: PerformanceComparisonDataFromLog;
423+
readonly from: { name: string; data: PerformanceComparisonDataFromLog };
424+
readonly to: { name: string; data: PerformanceComparisonDataFromLog };
425425
readonly comparison: boolean;
426426
}
427427

extensions/ql-vscode/src/compare-performance/compare-performance-view.ts

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import { PerformanceOverviewScanner } from "../log-insights/performance-comparis
1919
import type { ResultsView } from "../local-queries";
2020
import { readJsonlFile } from "../common/jsonl-reader";
2121
import type { SummaryEvent } from "../log-insights/log-summary";
22+
import type { CompletedLocalQueryInfo } from "../query-results";
2223

2324
export class ComparePerformanceView extends AbstractWebview<
2425
ToComparePerformanceViewMessage,
@@ -33,7 +34,35 @@ export class ComparePerformanceView extends AbstractWebview<
3334
super(app);
3435
}
3536

36-
async showResults(fromJsonLog: string, toJsonLog: string) {
37+
async showResults(
38+
from: CompletedLocalQueryInfo,
39+
to: CompletedLocalQueryInfo | undefined,
40+
) {
41+
if (to === undefined) {
42+
// For single-run comparisons, the performance viewer considers the 'from' side to be missing.
43+
return this.showResultsAux(undefined, from);
44+
} else {
45+
return this.showResultsAux(from, to);
46+
}
47+
}
48+
49+
private async showResultsAux(
50+
from: CompletedLocalQueryInfo | undefined,
51+
to: CompletedLocalQueryInfo,
52+
) {
53+
const fromJsonLog =
54+
from === undefined ? "" : from.evaluatorLogPaths?.jsonSummary;
55+
const toJsonLog = to.evaluatorLogPaths?.jsonSummary;
56+
57+
if (fromJsonLog === undefined || toJsonLog === undefined) {
58+
return extLogger.showWarningMessage(
59+
`Cannot compare performance as the structured logs are missing. Did the queries complete normally?`,
60+
);
61+
}
62+
await extLogger.log(
63+
`Comparing performance of ${from?.getQueryName() ?? "baseline"} and ${to?.getQueryName()}`,
64+
);
65+
3766
const panel = await this.getPanel();
3867
panel.reveal(undefined, false);
3968

@@ -75,10 +104,14 @@ export class ComparePerformanceView extends AbstractWebview<
75104
scanLogWithProgress(toJsonLog, fromJsonLog === "" ? "1/1" : "2/2"),
76105
]);
77106

107+
const fromName =
108+
from === undefined ? "" : this.labelProvider.getLabel(from);
109+
const toName = this.labelProvider.getLabel(to);
110+
78111
await this.postMessage({
79112
t: "setPerformanceComparison",
80-
from: fromPerf.getData(),
81-
to: toPerf.getData(),
113+
from: { name: fromName, data: fromPerf.getData() },
114+
to: { name: toName, data: toPerf.getData() },
82115
comparison: fromJsonLog !== "",
83116
});
84117
}

extensions/ql-vscode/src/extension.ts

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1226,23 +1226,7 @@ async function showPerformanceComparison(
12261226
from: CompletedLocalQueryInfo,
12271227
to: CompletedLocalQueryInfo | undefined,
12281228
): Promise<void> {
1229-
let fromLog = from.evaluatorLogPaths?.jsonSummary;
1230-
let toLog = to?.evaluatorLogPaths?.jsonSummary;
1231-
1232-
if (to === undefined) {
1233-
toLog = fromLog;
1234-
fromLog = "";
1235-
}
1236-
if (fromLog === undefined || toLog === undefined) {
1237-
return extLogger.showWarningMessage(
1238-
`Cannot compare performance as the structured logs are missing. Did they queries complete normally?`,
1239-
);
1240-
}
1241-
await extLogger.log(
1242-
`Comparing performance of ${from.getQueryName()} and ${to?.getQueryName() ?? "baseline"}`,
1243-
);
1244-
1245-
await view.showResults(fromLog, toLog);
1229+
await view.showResults(from, to);
12461230
}
12471231

12481232
function addUnhandledRejectionListener() {

extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -552,8 +552,8 @@ function ComparePerformanceWithData(props: {
552552

553553
const { from, to } = useMemo(
554554
() => ({
555-
from: new ComparisonDataset(data.from),
556-
to: new ComparisonDataset(data.to),
555+
from: new ComparisonDataset(data.from.data),
556+
to: new ComparisonDataset(data.to.data),
557557
}),
558558
[data],
559559
);
@@ -695,6 +695,13 @@ function ComparePerformanceWithData(props: {
695695
return (
696696
<>
697697
<ViewTitle>Performance comparison</ViewTitle>
698+
<div>
699+
{comparison ? "Comparing query runs" : "Showing query run"}:
700+
<ul>
701+
{comparison && <li>{data.from.name}</li>}
702+
<li>{data.to.name}</li>
703+
</ul>
704+
</div>
698705
{comparison && hasCacheHitMismatch.current && (
699706
<label>
700707
<input

0 commit comments

Comments
 (0)