Как интерпретировать пробелы в Chrome Flame Chart
Я пытаюсь лучше понять, как интерпретировать хромированные диаграммы пламени.
На графике ниже _changeHandler
отображается в виде четырех отдельных блоков. Однако я точно знаю, что он вызывается только один раз.
Я видел подобный вопрос здесь, который утверждает, что это может быть ошибкой, но это было четыре года назад:
Что означает этот разрыв в Chrome devtools
Вопрос:
В каком случае инструменты Chrome Perf отображают пробелы в диаграмме пламени для одного и того же вызова функции?
Настоящая проблема в том, что он действительно делает недействительным весь граф. Нижняя часть фрагмента графика, но верхняя часть - это та же функция. Я не могу понять, как понять это вообще.
При использовании троттлинга процессора, проблема становится экспоненциально хуже. Посмотрите на вторую картинку, это та же операция, что и на первом графике, но с замедлением процессора, установленным на 5-кратное замедление.
Фрагментированная панель под "Вызовом функции" представляет собой отдельный вызов функции, по некоторым причинам она фрагментирована в сотнях разделов.
1 ответ
Дело в том, что мы получаем данные функции JS путем выборки (в отличие от нативных событий, которые мы получаем, используя инструменты start/stop). Так что внутренне всего 4 сэмпла попали в указанную функцию. Мы не знаем, был ли он выполнен один или четыре раза или 100 раз, но мы делаем все возможное, чтобы склеить их так, чтобы это выглядело как один вызов, пока сэмплы находятся рядом.
Но иногда эта логика таинственно не работает. В большинстве случаев это происходит из-за некоторых проблем при выборке стека JS (если какая-то встроенная или встроенная функция находится сверху, мы иногда не можем правильно размотать стек).
Источник: чат с инженером DevTools
Если вы хотите отправить URL / шаги для воспроизведения в частном порядке, команда может проверить это. Они думали, что исправили эту категорию ошибок.