diff --git a/extensions/ql-vscode/src/common/interface-types.ts b/extensions/ql-vscode/src/common/interface-types.ts index 8d0681cbc..2a0fb24c8 100644 --- a/extensions/ql-vscode/src/common/interface-types.ts +++ b/extensions/ql-vscode/src/common/interface-types.ts @@ -403,6 +403,7 @@ export interface SetPerformanceComparisonQueries { readonly t: "setPerformanceComparison"; readonly from: PerformanceComparisonDataFromLog; readonly to: PerformanceComparisonDataFromLog; + readonly comparison: boolean; } export type FromComparePerformanceViewMessage = CommonFromViewMessages; diff --git a/extensions/ql-vscode/src/compare-performance/compare-performance-view.ts b/extensions/ql-vscode/src/compare-performance/compare-performance-view.ts index d286161b1..c1633801e 100644 --- a/extensions/ql-vscode/src/compare-performance/compare-performance-view.ts +++ b/extensions/ql-vscode/src/compare-performance/compare-performance-view.ts @@ -66,6 +66,7 @@ export class ComparePerformanceView extends AbstractWebview< t: "setPerformanceComparison", from: fromPerf.getData(), to: toPerf.getData(), + comparison: fromJsonLog !== "", }); } diff --git a/extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx b/extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx index 7983180c8..98925170d 100644 --- a/extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx +++ b/extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx @@ -216,6 +216,7 @@ const Dropdown = styled.select``; interface PipelineStepProps { before: number | undefined; after: number | undefined; + comparison: boolean; step: React.ReactNode; } @@ -223,7 +224,7 @@ interface PipelineStepProps { * Row with details of a pipeline step, or one of the high-level stats appearing above the pipelines (evaluation/iteration counts). */ function PipelineStep(props: PipelineStepProps) { - let { before, after, step } = props; + let { before, after, comparison, step } = props; if (before != null && before < 0) { before = undefined; } @@ -234,9 +235,11 @@ function PipelineStep(props: PipelineStepProps) { return ( - {before != null ? formatDecimal(before) : ""} + {comparison && ( + {before != null ? formatDecimal(before) : ""} + )} {after != null ? formatDecimal(after) : ""} - {delta != null ? renderDelta(delta) : } + {comparison && (delta != null ? renderDelta(delta) : )} {step} ); @@ -249,10 +252,11 @@ const HeaderTR = styled.tr` interface HighLevelStatsProps { before: PredicateInfo; after: PredicateInfo; + comparison: boolean; } function HighLevelStats(props: HighLevelStatsProps) { - const { before, after } = props; + const { before, after, comparison } = props; const hasBefore = before.absentReason !== AbsentReason.NotSeen; const hasAfter = after.absentReason !== AbsentReason.NotSeen; const showEvaluationCount = @@ -261,21 +265,25 @@ function HighLevelStats(props: HighLevelStatsProps) { <> - {hasBefore ? "Before" : ""} + {comparison && {hasBefore ? "Before" : ""}} {hasAfter ? "After" : ""} - {hasBefore && hasAfter ? "Delta" : ""} + {comparison && ( + {hasBefore && hasAfter ? "Delta" : ""} + )} Stats {showEvaluationCount && ( )} >( () => new Set(), ); @@ -478,9 +488,9 @@ function ComparePerformanceWithData(props: { - Before - After - Delta + {comparison && Before} + {comparison ? "After" : "Value"} + {comparison && Delta} Predicate @@ -503,14 +513,18 @@ function ComparePerformanceWithData(props: { - {renderAbsoluteValue(row.before, metric)} + {comparison && renderAbsoluteValue(row.before, metric)} {renderAbsoluteValue(row.after, metric)} - {renderDelta(row.diff, metric.unit)} + {comparison && renderDelta(row.diff, metric.unit)} {rowNames[rowIndex]} {expandedPredicates.has(row.name) && ( <> - + {collatePipelines( row.before.pipelines, row.after.pipelines, @@ -518,18 +532,23 @@ function ComparePerformanceWithData(props: { - {first != null && "Before"} + {comparison && ( + {first != null && "Before"} + )} {second != null && "After"} - - {first != null && second != null && "Delta"} - + {comparison && ( + + {first != null && second != null && "Delta"} + + )} Tuple counts for '{name}' pipeline - {first == null - ? " (after)" - : second == null - ? " (before)" - : ""} + {comparison && + (first == null + ? " (after)" + : second == null + ? " (before)" + : "")} {abbreviateRASteps(first?.steps ?? second!.steps).map( @@ -538,6 +557,7 @@ function ComparePerformanceWithData(props: { key={index} before={first?.counts[index]} after={second?.counts[index]} + comparison={comparison} step={step} /> ), @@ -556,9 +576,11 @@ function ComparePerformanceWithData(props: { - {formatDecimal(totalBefore)} + {comparison && ( + {formatDecimal(totalBefore)} + )} {formatDecimal(totalAfter)} - {renderDelta(totalDiff)} + {comparison && renderDelta(totalDiff)} TOTAL