Причиной этого является характер CPU профилировщика в хроме. Это профилировщик выборки. Таким образом, он собирает стеки вызовов (образцы) запущенной программы и использует их для восстановления столбцов в виде диаграммы.
Например, если профилировщик собрал 1000 образцов с одним кадром вызова для функции «foo» в каждом образце, вы увидите 1-длинную полосу с именем «foo» в ней.
Может случиться так, что профилировщик не сможет собрать следующую трассировку стека. Например, это происходит, когда профайлер пытается собрать кадры вызовов из стека в то время, когда функция «foo» называется функцией «бар» прямо перед образцом. В этот момент, сразу после команды вызова, функция «бар» создает кадр вызова для «foo» в стеке. Таким образом, кадры вызова в стеке в настоящий момент находятся в недействительном состоянии. Профилер обнаруживает это и отбрасывает образец. В результате разрыв происходит в последовательности следов стека.
В этом случае будут построены два разных столбца для «foo».
Также существует несколько других причин, когда профилировщик не может собирать стек вызовов.
Я замечаю, что существует «совокупное общее время», которое одинаково в каждом случае. Возможно, существует какая-то внутренняя странность V8, и трассировка стека начинает падать? – sennett