Skip to content

Commit 98910a4

Browse files
committed
Simplify view when not in comparison mode
1 parent 713f9c0 commit 98910a4

File tree

3 files changed

+49
-23
lines changed

3 files changed

+49
-23
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,7 @@ export interface SetPerformanceComparisonQueries {
403403
readonly t: "setPerformanceComparison";
404404
readonly from: PerformanceComparisonDataFromLog;
405405
readonly to: PerformanceComparisonDataFromLog;
406+
readonly comparison: boolean;
406407
}
407408

408409
export type FromComparePerformanceViewMessage = CommonFromViewMessages;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ export class ComparePerformanceView extends AbstractWebview<
6868
t: "setPerformanceComparison",
6969
from: fromPerf.getData(),
7070
to: toPerf.getData(),
71+
comparison: fromJsonLog !== "",
7172
});
7273
}
7374

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

Lines changed: 47 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -218,14 +218,15 @@ const Dropdown = styled.select``;
218218
interface PipelineStepProps {
219219
before: number | undefined;
220220
after: number | undefined;
221+
comparison: boolean;
221222
step: React.ReactNode;
222223
}
223224

224225
/**
225226
* Row with details of a pipeline step, or one of the high-level stats appearing above the pipelines (evaluation/iteration counts).
226227
*/
227228
function PipelineStep(props: PipelineStepProps) {
228-
let { before, after, step } = props;
229+
let { before, after, comparison, step } = props;
229230
if (before != null && before < 0) {
230231
before = undefined;
231232
}
@@ -236,9 +237,11 @@ function PipelineStep(props: PipelineStepProps) {
236237
return (
237238
<PipelineStepTR>
238239
<ChevronCell />
239-
<NumberCell>{before != null ? formatDecimal(before) : ""}</NumberCell>
240+
{comparison && (
241+
<NumberCell>{before != null ? formatDecimal(before) : ""}</NumberCell>
242+
)}
240243
<NumberCell>{after != null ? formatDecimal(after) : ""}</NumberCell>
241-
{delta != null ? renderDelta(delta) : <td></td>}
244+
{comparison && (delta != null ? renderDelta(delta) : <td></td>)}
242245
<NameCell>{step}</NameCell>
243246
</PipelineStepTR>
244247
);
@@ -251,10 +254,11 @@ const HeaderTR = styled.tr`
251254
interface HighLevelStatsProps {
252255
before: PredicateInfo;
253256
after: PredicateInfo;
257+
comparison: boolean;
254258
}
255259

256260
function HighLevelStats(props: HighLevelStatsProps) {
257-
const { before, after } = props;
261+
const { before, after, comparison } = props;
258262
const hasBefore = before.absentReason !== AbsentReason.NotSeen;
259263
const hasAfter = after.absentReason !== AbsentReason.NotSeen;
260264
const showEvaluationCount =
@@ -263,21 +267,25 @@ function HighLevelStats(props: HighLevelStatsProps) {
263267
<>
264268
<HeaderTR>
265269
<ChevronCell></ChevronCell>
266-
<NumberHeader>{hasBefore ? "Before" : ""}</NumberHeader>
270+
{comparison && <NumberHeader>{hasBefore ? "Before" : ""}</NumberHeader>}
267271
<NumberHeader>{hasAfter ? "After" : ""}</NumberHeader>
268-
<NumberHeader>{hasBefore && hasAfter ? "Delta" : ""}</NumberHeader>
272+
{comparison && (
273+
<NumberHeader>{hasBefore && hasAfter ? "Delta" : ""}</NumberHeader>
274+
)}
269275
<NameHeader>Stats</NameHeader>
270276
</HeaderTR>
271277
{showEvaluationCount && (
272278
<PipelineStep
273279
before={before.evaluationCount || undefined}
274280
after={after.evaluationCount || undefined}
281+
comparison={comparison}
275282
step="Number of evaluations"
276283
/>
277284
)}
278285
<PipelineStep
279286
before={before.iterationCount / before.evaluationCount || undefined}
280287
after={after.iterationCount / after.evaluationCount || undefined}
288+
comparison={comparison}
281289
step={
282290
showEvaluationCount
283291
? "Number of iterations per evaluation"
@@ -379,6 +387,8 @@ function ComparePerformanceWithData(props: {
379387
[data],
380388
);
381389

390+
const comparison = data?.comparison;
391+
382392
const [expandedPredicates, setExpandedPredicates] = useState<Set<string>>(
383393
() => new Set<string>(),
384394
);
@@ -480,9 +490,9 @@ function ComparePerformanceWithData(props: {
480490
<thead>
481491
<HeaderTR>
482492
<ChevronCell />
483-
<NumberHeader>Before</NumberHeader>
484-
<NumberHeader>After</NumberHeader>
485-
<NumberHeader>Delta</NumberHeader>
493+
{comparison && <NumberHeader>Before</NumberHeader>}
494+
<NumberHeader>{comparison ? "After" : "Value"}</NumberHeader>
495+
{comparison && <NumberHeader>Delta</NumberHeader>}
486496
<NameHeader>Predicate</NameHeader>
487497
</HeaderTR>
488498
</thead>
@@ -505,33 +515,44 @@ function ComparePerformanceWithData(props: {
505515
<ChevronCell>
506516
<Chevron expanded={expandedPredicates.has(row.name)} />
507517
</ChevronCell>
508-
{renderAbsoluteValue(row.before, metric)}
518+
{comparison && renderAbsoluteValue(row.before, metric)}
509519
{renderAbsoluteValue(row.after, metric)}
510-
{renderDelta(row.diff, metric.unit)}
520+
{comparison && renderDelta(row.diff, metric.unit)}
511521
<NameCell>{rowNames[rowIndex]}</NameCell>
512522
</PredicateTR>
513523
{expandedPredicates.has(row.name) && (
514524
<>
515-
<HighLevelStats before={row.before} after={row.after} />
525+
<HighLevelStats
526+
before={row.before}
527+
after={row.after}
528+
comparison={comparison}
529+
/>
516530
{collatePipelines(
517531
row.before.pipelines,
518532
row.after.pipelines,
519533
).map(({ name, first, second }, pipelineIndex) => (
520534
<Fragment key={pipelineIndex}>
521535
<HeaderTR>
522536
<td></td>
523-
<NumberHeader>{first != null && "Before"}</NumberHeader>
537+
{comparison && (
538+
<NumberHeader>{first != null && "Before"}</NumberHeader>
539+
)}
524540
<NumberHeader>{second != null && "After"}</NumberHeader>
525-
<NumberHeader>
526-
{first != null && second != null && "Delta"}
527-
</NumberHeader>
541+
{comparison && (
542+
<NumberHeader>
543+
{first != null &&
544+
second != null &&
545+
(comparison ? "Delta" : "Value")}
546+
</NumberHeader>
547+
)}
528548
<NameHeader>
529549
Tuple counts for &apos;{name}&apos; pipeline
530-
{first == null
531-
? " (after)"
532-
: second == null
533-
? " (before)"
534-
: ""}
550+
{comparison &&
551+
(first == null
552+
? " (after)"
553+
: second == null
554+
? " (before)"
555+
: "")}
535556
</NameHeader>
536557
</HeaderTR>
537558
{abbreviateRASteps(first?.steps ?? second!.steps).map(
@@ -540,6 +561,7 @@ function ComparePerformanceWithData(props: {
540561
key={index}
541562
before={first?.counts[index]}
542563
after={second?.counts[index]}
564+
comparison={comparison}
543565
step={step}
544566
/>
545567
),
@@ -558,9 +580,11 @@ function ComparePerformanceWithData(props: {
558580
</tr>
559581
<tr key="total">
560582
<ChevronCell />
561-
<NumberCell>{formatDecimal(totalBefore)}</NumberCell>
583+
{comparison && (
584+
<NumberCell>{formatDecimal(totalBefore)}</NumberCell>
585+
)}
562586
<NumberCell>{formatDecimal(totalAfter)}</NumberCell>
563-
{renderDelta(totalDiff)}
587+
{comparison && renderDelta(totalDiff)}
564588
<NameCell>TOTAL</NameCell>
565589
</tr>
566590
</tfoot>

0 commit comments

Comments
 (0)