Среда
Все цифры на этой странице получены на одном компьютере: обычном ноутбуке со встроенной графикой, на котором разрабатывается приложение. Версия для Windows здесь ещё не измерялась, а версия для macOS находится в разработке; их строки появятся здесь после выпуска.
| Компьютер | ОС | Дисплей | Примечания |
|---|---|---|---|
| Ноутбук, Intel i5-11300H, 23 GB, Iris Xe (Mesa 25.2) | Ubuntu 24.04, GNOME в X11 | 2560×1440 @ 180 Hz | Релизная сборка 1.0.0, коммит 183cc22 |
Тестовый документ: tools/perf/fixtures/doc100k.md (100 KB, 874 строки) · 3 запуска, медиана · указатель за пределами окна · настоящий сеансовый автобус.
Кадры в простое
Утверждение: когда ничего не происходит, mori ничего не отрисовывает. Документ открыт в режиме «Редактор», фокус снят с редактора, чтобы каретка не мигала, ввода нет 10 секунд (t = 5–15 с после запуска). Мы считаем снимки самого редактора — каждый случай, когда GTK просит его выполнить отрисовку.
| Платформа | Кадров за 10 с | CPU, среднее | Метод |
|---|---|---|---|
| Linux | 0 | 0.0% | Подсчёт снимков редактора через tools/perf/gate.sh |
Когда мигание каретки включено — по умолчанию, пока окно в фокусе, — редактор перерисовывается один раз на каждое мигание: меняется только каретка. Как только окно теряет фокус, перерисовка прекращается. Таймер мигания — единственный допустимый постоянный таймер приложения; других повторяющихся источников в простое нет.
Задержка ввода
Утверждение: 18.2 мс от нажатия до пикселя, 95-й перцентиль. Измерено вне процесса при помощи tools/perf/index/e2e_latency.sh: клавиша подаётся через XTest, а экран опрашивается, пока не изменится строка с курсором. Документ 100 КБ, режим Live, 2560×1440 при 180 Гц. На 119 нажатиях: p50 14.1, p95 18.2, p99 19.1, максимум 20.4 мс.
В число входит всё, что лежит между клавишей и пикселем: тулкит, композитор и ожидание следующего кадра. Это ожидание приходится куда угодно между нулём и интервалом обновления — на 180 Гц не более 5.6 мс, в среднем 2.8, — поэтому это число можно ставить рядом только с другим редактором, измеренным при той же частоте. Время отклика самого экрана не учтено; мы его не измеряли.
Холодный запуск
Утверждение: 387 мс от запуска до окна, с открытым файлом 100 КБ и пустым кэшем. Холодный старт — это новый процесс и сброшенный страничный кэш: бинарник, библиотеки и файл читаются с диска. С тёплым кэшем — в обычной жизни — тот же запуск занимает 259 мс. Часы стартуют на exec и останавливаются, когда окно появилось; первая отрисовка — те же часы, остановленные на первом рисовании документа.
| Редактор | exec → окно | Тёплый кэш | Первая отрисовка | Процессы |
|---|---|---|---|---|
| mori | 387 ms | 259 ms | 377 ms | 1 |
| Typora | 814 ms | 511 ms | — | 9 |
| Obsidian | 2,975 ms | 2,862 ms | — | 7 |
| MarkText | 2,042 ms | 1,872 ms | — | 6 |
Метод: tools/perf/run-index.sh, холодный = новый процесс со сброшенным страничным кэшем, файл 100 КБ открыт при запуске, пять прогонов. Память — это PSS из /proc после того, как документ свёрстан и приложение перешло в покой, минус то же измерение с пустым документом: столько стоит нам сам документ — 9,4 МБ из 70 МБ. Остальное — пол из тулкита и графического стека, который на этой машине платит любое GTK4-приложение; он двигается вместе с драйвером, поэтому мы публикуем свою долю. Бинарник весит 6.1 МБ. Первую отрисовку читаем из собственного счётчика кадров редактора, а он есть только в нашей dev-сборке — у остальных трёх стоит прочерк, а не догадка.
Тот же компьютер, тот же документ
Typora, Obsidian и MarkText — каждый открыт на том же документе 100 КБ в своём режиме редактирования на месте (WYSIWYG у Typora, Live Preview у Obsidian, MarkText), на машине выше и в том же прогоне, что и наши числа. Память — PSS всего дерева процессов после того, как документ свёрстан и приложение перешло в покой; CPU в покое — CPU дерева за тридцать секунд с окном в фокусе и без ввода; CPU набора — CPU дерева, пока около 700 символов набираются в человеческом темпе, по одному каждые 150 мс.
| Редактор | Версия | PSS | CPU в простое | CPU при наборе | Процессы |
|---|---|---|---|---|---|
| mori | 1.0.0, коммит 183cc22 | 70 MB | 0.0% | 7.2% | 1 |
| Typora | 1.14.9 | 457 MB | 1.1% | 30.5% | 9 |
| Obsidian | 1.12.7 | 346 MB | 1.6% | 32.5% | 7 |
| MarkText | 0.20.0-rc.1 | 405 MB | 1.4% | 62.3% | 6 |
Первым движки расходятся в покое: окно открыто, ничего не происходит — mori не тратит измеримого процессора и просыпается ноль раз в секунду, а три редактора на Electron сидят на 1,1–1,6 % и 29–75 пробуждениях. Второе расхождение — набор: доля ядра против трети или двух третей. Третье — память: один процесс против шести-девяти, 70 МБ против 346–457.
MarkText запускался с --no-sandbox (его песочница не стартует на этом ядре); Obsidian запускался в отдельном каталоге пользовательских данных. Сырые данные: tools/perf/results/2026-09-09-linux-myasus-180hz.json.
Воспроизвести
Скрипты измерения и файл результата лежат в репозитории; публичный репозиторий с корпусом и сырыми данными готовится, даты пока нет. tools/perf/run-index.sh прогоняет все показатели, tools/perf/check.sh проверяет результат по бюджетам. Если ваши числа расходятся с нашими больше чем на 15 %, напишите нам; мы опубликуем расхождение.
Последний прогон: 2026-09-09, один запуск tools/perf/run-index.sh на коммите 183cc22 — все числа на этой странице, наши и других редакторов, взяты из этого прогона. Повторяем к каждому релизу.