Как работает ng.profiler.timeChangeDetection()?

#javascript #angular #google-chrome-devtools

#javascript #угловой #google-chrome-devtools

Вопрос:

Я ищу, ng.profiler.timeChangeDetection() чтобы помочь профилировать приложение Angular. Однако есть некоторые вещи, которые остаются неясными.

Когда я запускаю ng.profiler.timeChangeDetection({ record: true }) консоль, я получаю вывод, который выглядит примерно так.

common_tools.ts: 64 запустил 15 циклов обнаружения изменений common_tools.ts: 65 34,61 мс на проверку профиля «Обнаружение изменений». Обнаружение изменений профиля завершено. ChangeDetectionPerfRecord {msPerTick: 34.61200000019744, numTicks: 15}

Если я профилирую chrome, а затем вхожу ng.profiler.timeChangeDetection({ record: true }) через консоль chrome dev tools, я вижу что-то вроде этого.

введите описание изображения здесь

Итак, я вижу, что он появился для обнаружения изменения профиля, но с какой точки?

Документы (https://angular.io/api/platform-browser/enableDebugTools ) показывают, как выполнить команду, но они не вдаются в подробности относительно того, что происходит на самом деле. Я ищу некоторую ясность в отношении..

  1. Что ng.profiler.timeChangeDetection({ record: true }) на самом деле делает запуск?
  2. ng.profiler.timeChangeDetection({ record: true }) Эмулирует ли обновление страницы?
  3. Запускает ли это обнаружение изменений во всем приложении?
  4. В какой момент отслеживаются изменения? Это говорит мне, что было 15 циклов обнаружения изменений, но какое событие вызвало эти циклы?

Комментарии:

1. Это может объяснить часть того, что вы хотите знать: профилирование обнаружения угловых изменений

2. @Ouroborus, я видел эту статью, но я все еще не был уверен, какие компоненты вычисляются в таймингах? Странно, что он может получить любые тайминги, просто выполнив команду в инструментах разработки. Должно быть, оно запускает какое-то событие, чтобы вызвать обнаружение изменений в любых компонентах, с которыми оно сравнивается? Возможно, это просто ChangeDetectorRef внутреннее использование и запуск detectChanges() события? В этом я не уверен и надеялся, что, может быть, кто-нибудь знает.

3. common_tools.ts Похоже, что он вызывает несколько циклов обнаружения изменений (вызывая .tick() 5 или более раз, пока не пройдет 500 мс), а затем сообщает среднее время, которое они заняли.