Skip to content

Commit 8cb29e9

Browse files
committed
alert about selfTime metric that exceeds 1/5 less of the 1/60 frame time
1 parent 0b11c21 commit 8cb29e9

File tree

7 files changed

+38
-8
lines changed

7 files changed

+38
-8
lines changed

public/global.css

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
--text-zebra: light-dark(rgb(30% 30% 30%), rgb(70% 70% 70%));
1212
--link: light-dark(rgb(0% 0% 0%), rgb(100% 100% 100%));
1313
--link-visited-bg: rgb(79 189 36 / 0.24);
14+
--error: rgb(100% 0% 0%);
1415

1516
--small-icon-size: 0.6875rem;
1617
}

src/api/const.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export const MAX_TRAFFIC_DURATION_BEFORE_AUTOPAUSE = 2e3; // ms
88
export const FRAME_1of60 = 0.0166666666667; // ms
99
export const VARIABLE_ANIMATION_THROTTLE = 3500; // eye blinking average frequency
1010
export const CALLED_ABORTED_TOOLTIP = '<called>-<aborted>/<abort-locations>';
11+
export const SELF_TIME_MAX_GOOD = 13.333333333333332; // ms
1112

1213
// store native functions
1314
export const setTimeout = /*@__PURE__*/ window.setTimeout.bind(window);

src/view/components/AnimationRequestHistory.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
ESortOrder,
88
} from '../../api/settings.ts';
99
import { compareByFieldOrder } from '../../api/comparator.ts';
10-
import { Stopper } from '../../api/time.ts';
1110
import Variable from './Variable.svelte';
1211
import Trace from './Trace.svelte';
1312
import TraceDomain from './TraceDomain.svelte';
1413
import SortableColumn from './SortableColumn.svelte';
14+
import FrameSensitiveTime from './FrameSensitiveTime.svelte';
1515
1616
let {
1717
metrics,
@@ -82,7 +82,7 @@
8282
<td class="wb-all">
8383
<Trace trace={metric.trace} traceId={metric.traceId} />
8484
</td>
85-
<td class="ta-r">{Stopper.toString(metric.selfTime)}</td>
85+
<td class="ta-r"><FrameSensitiveTime value={metric.selfTime} /></td>
8686
<td class="ta-c"><Variable value={metric.calls} /></td>
8787
<td class="ta-c"><Variable value={metric.handler} /></td>
8888
</tr>

src/view/components/EvalMetrics.svelte

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<script lang="ts">
22
import type { TEvalHistory } from '../../api/wrappers.ts';
3-
import { Stopper } from '../../api/time.ts';
43
import Variable from './Variable.svelte';
54
import Trace from './Trace.svelte';
65
import TraceDomain from './TraceDomain.svelte';
6+
import FrameSensitiveTime from './FrameSensitiveTime.svelte';
77
88
let { metrics }: { metrics: TEvalHistory[] } = $props();
99
@@ -40,7 +40,9 @@
4040
<td class="wb-all">
4141
<Trace trace={metric.trace} traceId={metric.traceId} />
4242
</td>
43-
<td class="ta-r">{Stopper.toString(metric.selfTime)}</td>
43+
<td class="ta-r">
44+
<FrameSensitiveTime value={metric.selfTime} />
45+
</td>
4446
<td class="ta-c">
4547
<Variable value={metric.calls} />
4648
</td>
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<script lang="ts">
2+
import { SELF_TIME_MAX_GOOD } from 'src/api/const.ts';
3+
import { Stopper } from 'src/api/time';
4+
5+
let { value }: { value: number | null } = $props();
6+
let isBad = $derived.by(() => {
7+
return value && value > SELF_TIME_MAX_GOOD;
8+
});
9+
</script>
10+
11+
<span class:shouldMark={isBad}>
12+
{Stopper.toString(value)}
13+
</span>
14+
15+
<style lang="scss">
16+
.shouldMark {
17+
color: var(--error);
18+
font-weight: bold;
19+
}
20+
</style>

src/view/components/IdleCallbackRequestHistory.svelte

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,15 @@
1111
} from '../../api/settings.ts';
1212
import { compareByFieldOrder } from '../../api/comparator.ts';
1313
import { CALLED_ABORTED_TOOLTIP } from '../../api/const.ts';
14-
import { delayTitle, Stopper } from '../../api/time.ts';
14+
import { delayTitle } from '../../api/time.ts';
1515
import Variable from './Variable.svelte';
1616
import Trace from './Trace.svelte';
1717
import TraceDomain from './TraceDomain.svelte';
1818
import IdleCallbackCancelHistory from './IdleCallbackCancelHistory.svelte';
1919
import Dialog from './Dialog.svelte';
2020
import Alert from './Alert.svelte';
2121
import SortableColumn from './SortableColumn.svelte';
22+
import FrameSensitiveTime from './FrameSensitiveTime.svelte';
2223
2324
let {
2425
metrics,
@@ -156,7 +157,9 @@
156157
><Trace trace={metric.trace} traceId={metric.traceId} /></td
157158
>
158159
<td class="ta-c">{metric.didTimeout}</td>
159-
<td class="ta-r">{Stopper.toString(metric.selfTime)}</td>
160+
<td class="ta-r">
161+
<FrameSensitiveTime value={metric.selfTime} />
162+
</td>
160163
<td class="ta-c">
161164
<Variable value={metric.calls} />{#if metric.canceledCounter}-<a
162165
role="button"

src/view/components/TimersSetHistory.svelte

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,15 @@
1111
} from '../../api/settings.ts';
1212
import { compareByFieldOrder } from '../../api/comparator.ts';
1313
import { CALLED_ABORTED_TOOLTIP } from '../../api/const.ts';
14-
import { delayTitle, Stopper } from '../../api/time.ts';
14+
import { delayTitle } from '../../api/time.ts';
1515
import Variable from './Variable.svelte';
1616
import Trace from './Trace.svelte';
1717
import TraceDomain from './TraceDomain.svelte';
1818
import SortableColumn from './SortableColumn.svelte';
1919
import TimersClearHistory from './TimersClearHistory.svelte';
2020
import Dialog from './Dialog.svelte';
2121
import Alert from './Alert.svelte';
22+
import FrameSensitiveTime from './FrameSensitiveTime.svelte';
2223
2324
let {
2425
metrics,
@@ -162,7 +163,9 @@
162163
<td class="wb-all">
163164
<Trace trace={metric.trace} traceId={metric.traceId} />
164165
</td>
165-
<td class="ta-r">{Stopper.toString(metric.selfTime)}</td>
166+
<td class="ta-r">
167+
<FrameSensitiveTime value={metric.selfTime} />
168+
</td>
166169
<td class="ta-c">
167170
<Variable value={metric.calls} />{#if metric.canceledCounter}-<a
168171
role="button"

0 commit comments

Comments
 (0)