Профилировщик
Начиная с версии 3.2.0 (бета).
Вкладка Профилировщик измеряет время вычисления формул. Она записывает каждое вычисление и показывает его в виде хронологии и таблицы: длительности, число вызовов, цепочки вызовов. Вы видите, на что уходит время, — в том числе в вызовах, которые запускает сам Ninext.
Вкладка доступна только администраторам. На ней виден лишь её значок — секундомер — между вкладками Ошибки и Поиск кода; название появляется при наведении. Вкладка отключается в окне Настройки Ninext, раздел «Менеджер скриптов»: параметр Профилировщик формул.
Запуск и остановка измерения
Основная кнопка, Начать измерение, принимает название выбранного способа запуска (Запуск при первом вычислении, Запуск при следующем щелчке); во время измерения она превращается в Остановить измерение. Маленькая кнопка рядом, на которой видны значки выбранных способов запуска и остановки, открывает меню Выбрать пусковое событие, состоящее из двух частей. Первая определяет, когда начинается измерение:
| Запуск | Действие |
|---|---|
| Немедленный запуск | Измерение начинается по щелчку. Это настройка по умолчанию. |
| При первом вычислении | Измерение начинается со следующего вычисления формулы, которое служит началом отсчёта времени. |
| При следующем щелчке | Измерение начинается при следующем щелчке вне вкладки «Профилировщик». До тех пор кнопка превращается в Отмена. |
Вторая — когда оно останавливается:
| Остановка | Действие |
|---|---|
| Ручная остановка | Кнопкой Остановить измерение. Это настройка по умолчанию. |
| Остановка через 10, 30 или 60 с | Обратный отсчёт начинается с момента запуска измерения. |
| По завершении вычисления | Предлагается вместе с «При первом вычислении»: измерение останавливается, когда это вычисление завершается, включая его асинхронное продолжение. |
| При отпускании кнопки мыши | Предлагается вместе с «При следующем щелчке»: измерение останавливается, когда вы отпускаете кнопку мыши. То, что продолжается после этого асинхронно, не измеряется. |
Так вы измеряете только то, что вас интересует: открытие записи, нажатие кнопки, вычисление представления. Этот выбор действует до перезагрузки страницы.
Пока измерение ждёт своего пускового события, строка состояния показывает «Взведено — ожидание пускового события…». Во время измерения она показывает, сколько секунд оно уже идёт, число зафиксированных вычислений и число различных формул.
Полезно знать
Запуск нового измерения не очищает предыдущие результаты: вычисления накапливаются от измерения к измерению — в таблице, в счётчиках и в хронологии, — пока вы не нажмёте Очистить. Каждое измерение начинается с нуля на оси времени, поэтому полосы двух последовательных измерений накладываются друг на друга в начале хронологии. Чтобы увидеть одно измерение отдельно, нажмите Очистить перед его запуском.
Хронология
Каждое вычисление — полоса на оси времени. Вложенные или одновременные вычисления располагаются друг над другом на нескольких строках; у каждой формулы свой цвет, а полупрозрачная полоса — это ещё идущее вычисление. На достаточно широких полосах написано имя их поля («Таблица ▸ Поле»), а для вызовов плагина перед ним стоит «Ninext ▸». Вид заполняется в реальном времени. Он хранит не более 20 000 вычислений: сверх этого примечание сообщает число отброшенных вычислений, которые учитывает уже только таблица.
Масштабирование:
- колёсико мыши или сведение пальцев на сенсорной панели в Chrome масштабирует изображение под указателем (движение двумя пальцами прокручивает его);
- двойной щелчок по полосе выделяет её и приближает;
- три кнопки: Вместить весь сеанс, Уменьшить масштаб времени и Увеличить масштаб времени.
Таблица

Таблица группирует вычисления по формулам:
| Колонка | Содержимое |
|---|---|
| Формула | Измеряемая формула. |
| Вызовы | Число вычислений. |
| Всего (мс) | Суммарное время. |
| Среднее (мс) | Среднее время одного вычисления. |
| Макс (мс) | Самое долгое вычисление. |
Таблица отсортирована по суммарному времени — от самых затратных формул к наименее затратным — и обновляется каждую секунду; показываются первые 100 строк, и сверх этого об этом сообщает примечание («Показано 100 строк из N — сначала самые затратные.»). Если различных формул больше 1 000, следующие объединяются в строку «… прочие формулы». Формула схемы представлена так же, как на вкладке Поля и формулы: навигационная цепочка, «Fx», кнопка изменения, — с пометкой «+N», когда та же формула находится в нескольких местах. Метка «Ninext» отмечает вызовы, запущенные плагином.
Подробности вычисления

Щелчок по полосе или по строке открывает подробности:
- полный код формулы;
- для полосы: Начало, Длительность, Запись и Цепочка вызовов — от корневого вычисления до текущего, причём каждое звено кликабельно; для строки таблицы — Измерения (число вызовов, суммарное, среднее и максимальное время);
- Источник — для вызова, запущенного Ninext;
- Переменные (инспекция) — для вычисления инспектируемой формулы (см. ниже);
- Расположения формулы в схеме, с кнопкой перехода к коду;
- внизу — Приблизить это вычисление и Инспектировать эту формулу.
Инспекция формулы
Выберите формулу в таблице или в хронологии, затем нажмите Инспектировать эту формулу. Во время измерения при каждом вычислении этой формулы профилировщик фиксирует значение каждой переменной, объявленной через var или let: краткий вид значения, а при наведении — его тип.
Вкладка Инспекция перечисляет эти вычисления, самое свежее — вверху; щелчок по одному из них находит его в хронологии. Инспектировать можно только одну формулу за раз; Остановить инспекцию завершает её.
Два ограничения: повторные присваивания и переменные цикла не фиксируются, а время инспектируемой формулы становится ориентировочным, поскольку сама фиксация занимает время.
Как читать цифры
- Время включающее: формула учитывает и время формул, которые она вычисляет.
- Для асинхронного вычисления время идёт до его завершения, включая загрузку данных.
- Два поля с абсолютно одинаковой формулой занимают одну строку таблицы.
- Измеряются формулы, триггеры, колонки представлений, код Консоли и вызовы Ninext. Собственный JavaScript Ninext не измеряется.
- Измерение обходится лишь в несколько микросекунд на вычисление, а вне измерения ничего не стоит. Результаты хранятся в памяти: они исчезают при перезагрузке страницы.
