Skip to content

Commit 61d7f4f

Browse files
committed
fix: plugin hook duration calculation logic
1 parent 37b93aa commit 61d7f4f

File tree

2 files changed

+10
-15
lines changed

2 files changed

+10
-15
lines changed

packages/devtools-vite/src/app/components/data/PluginDetailsLoader.vue

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,31 +42,31 @@ const hookLoadDuration = computed(() => {
4242
if (!loadMetrics?.length) {
4343
return
4444
}
45-
return loadMetrics[loadMetrics.length - 1]!.timestamp_end - loadMetrics[0]!.timestamp_start
45+
return loadMetrics.reduce((arc, item) => arc + item.duration, 0)
4646
})
4747
4848
const hookTransformDuration = computed(() => {
4949
const transformMetrics = state.value?.transformMetrics
5050
if (!transformMetrics?.length) {
5151
return
5252
}
53-
return transformMetrics[transformMetrics.length - 1]!.timestamp_end - transformMetrics[0]!.timestamp_start
53+
return transformMetrics.reduce((arc, item) => arc + item.duration, 0)
5454
})
5555
5656
const hookResolveIdDuration = computed(() => {
5757
const resolveIdMetrics = state.value?.resolveIdMetrics
5858
if (!resolveIdMetrics?.length) {
5959
return
6060
}
61-
return resolveIdMetrics[resolveIdMetrics.length - 1]!.timestamp_end - resolveIdMetrics[0]!.timestamp_start
61+
return resolveIdMetrics.reduce((arc, item) => arc + item.duration, 0)
6262
})
6363
6464
const totalDuration = computed(() => {
6565
const calls = state.value?.calls
6666
if (!calls?.length) {
6767
return
6868
}
69-
return calls[calls.length - 1]!.timestamp_end - calls[0]!.timestamp_start
69+
return calls.reduce((arc, item) => arc + item.duration, 0)
7070
})
7171
</script>
7272

@@ -86,26 +86,26 @@ const totalDuration = computed(() => {
8686
<div text-xs font-mono flex="~ items-center gap-3" ml2>
8787
<DisplayDuration
8888
:duration="hookResolveIdDuration" flex="~ gap-1 items-center"
89-
:title="`Resolve Id hooks cost: ${hookResolveIdDuration}ms`"
89+
:title="`Resolve Id hooks cost: ${hookResolveIdDuration ?? 0}ms`"
9090
>
9191
<span i-ph-magnifying-glass-duotone inline-block />
9292
</DisplayDuration>
9393
<DisplayDuration
9494
:duration="hookLoadDuration" flex="~ gap-1 items-center"
95-
:title="`Load hooks cost: ${hookLoadDuration}ms`"
95+
:title="`Load hooks cost: ${hookLoadDuration ?? 0}ms`"
9696
>
9797
<span i-ph-upload-simple-duotone inline-block />
9898
</DisplayDuration>
9999
<DisplayDuration
100100
:duration="hookTransformDuration" flex="~ gap-1 items-center"
101-
:title="`Transform hooks cost: ${hookTransformDuration}ms`"
101+
:title="`Transform hooks cost: ${hookTransformDuration ?? 0}ms`"
102102
>
103103
<span i-ph-magic-wand-duotone inline-block />
104104
</DisplayDuration>
105105
<span op40>|</span>
106106
<DisplayDuration
107107
:duration="totalDuration" flex="~ gap-1 items-center"
108-
:title="`Total build cost: ${totalDuration}ms`"
108+
:title="`Total build cost: ${totalDuration ?? 0}ms`"
109109
>
110110
<span i-ph-clock-duotone inline-block />
111111
</DisplayDuration>

packages/devtools-vite/src/app/components/flowmap/PluginFlowTimeline.vue

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,12 @@ function normalizeMetrics(metrics: PluginBuildInfo[]) {
1616
modules: 0,
1717
}
1818
const seen = new Set()
19-
metrics.forEach((metric, index) => {
19+
metrics.forEach((metric) => {
2020
if (!seen.has(metric.module)) {
2121
seen.add(metric.module)
2222
info.modules++
2323
}
24-
if (index === 0) {
25-
info.duration = metric.timestamp_start
26-
}
27-
if (index === metrics.length - 1) {
28-
info.duration = metric.timestamp_end - info.duration
29-
}
24+
info.duration += metric.duration
3025
})
3126
if (info.duration === 0) {
3227
info.duration = null!

0 commit comments

Comments
 (0)