@@ -58,20 +58,32 @@ function computeSelfTime(span: Span, allSpans: Span[]): number {
58
58
const spanEndTime = child . startTime + child . duration ;
59
59
const spanStartsAfterParentEnded = child . startTime > parentSpanEndTime ;
60
60
const spanEndsBeforePreviousSpan = spanEndTime < previousSpanEndTime ;
61
+
62
+ // parent |..................|
63
+ // child |.......|
64
+ // child |.....| - spanEndsBeforePreviousSpan is true, skipped
65
+ // child |......| - spanStartsAfterParentEnded is true, skipped
61
66
if ( spanStartsAfterParentEnded || spanEndsBeforePreviousSpan ) {
62
67
continue ;
63
68
}
64
69
65
70
let nonOverlappingStartTime = child . startTime ;
66
71
let nonOverlappingDuration = child . duration ;
67
-
68
72
const spanStartsBeforePreviousSpanEnds = child . startTime < previousSpanEndTime ;
73
+
74
+ // parent |.....................|
75
+ // child |.......|
76
+ // child |.....| - spanStartsBeforePreviousSpanEnds is true
77
+ // child |.....| - spanStartsBeforePreviousSpanEnds is false
69
78
if ( spanStartsBeforePreviousSpanEnds ) {
70
79
const diff = previousSpanEndTime - child . startTime ;
71
80
nonOverlappingDuration = child . duration - diff ;
72
81
nonOverlappingStartTime = previousSpanEndTime ;
73
82
}
74
83
// last span which can be included in self time calculation, because it ends after parent span ends
84
+ // parent |......................|
85
+ // child |.....| - last span included in self time calculation
86
+ // child |.........| - skipped
75
87
else if ( spanEndTime > parentSpanEndTime ) {
76
88
const diff = spanEndTime - parentSpanEndTime ;
77
89
0 commit comments