in packages/rum-core/src/performance-monitoring/performance-monitoring.js [66:110]
export function groupSmallContinuouslySimilarSpans(
originalSpans,
transDuration,
threshold
) {
/**
* sort the original spans
*/
originalSpans.sort((spanA, spanB) => spanA._start - spanB._start)
var spans = []
let lastCount = 1
originalSpans.forEach(function (span, index) {
if (spans.length === 0) {
spans.push(span)
} else {
var lastSpan = spans[spans.length - 1]
var isContinuouslySimilar =
lastSpan.type === span.type &&
lastSpan.subtype === span.subtype &&
lastSpan.action === span.action &&
lastSpan.name === span.name &&
span.duration() / transDuration < threshold &&
(span._start - lastSpan._end) / transDuration < threshold
var isLastSpan = originalSpans.length === index + 1
if (isContinuouslySimilar) {
lastCount++
lastSpan._end = span._end
}
if (lastCount > 1 && (!isContinuouslySimilar || isLastSpan)) {
lastSpan.name = lastCount + 'x ' + lastSpan.name
lastCount = 1
}
if (!isContinuouslySimilar) {
spans.push(span)
}
}
})
return spans
}