← Все посты

Drafta 1.1: в пять тысяч заметок без задержек

Drafta 1.1 про скорость: автосохранение за 7 мс, поиск за миллисекунды, запуск за доли секунды, переключение заметок без перезагрузки редактора.

Релиз 1.1 почти целиком про скорость. Всё замерял на искусственной библиотеке в 5000 заметок: так видно, где редактор тормозит у тех, кто пишет в нём годами.

Что было медленно

Сначала я прогнал аудит производительности. Три места тормозили заметнее всего:

  • Автосохранение. Каждое сохранение пересобирало индекс вики-ссылок по всей библиотеке. На 5000 заметках это 150 мс на главном потоке, и при наборе раз в полсекунды чувствовалась «запинка».
  • Поиск. Каждый запрос приводил к нижнему регистру весь текст библиотеки и перебирал его подряд. До 1,6 секунды на запрос, всё это время интерфейс стоял.
  • Запуск. Все файлы читались по одному под координатором файлов на главном потоке: около 7 секунд до первой заметки.

Что стало

ОперацияБылоСтало
Автосохранение заметки~150 мс~7 мс
Поиск по тексту0,8–1,6 с3–7 мс, в фоне
Загрузка библиотеки~7,4 с~0,15 с, в фоне
Счётчики блокнотов в сайдбаредо 218 мсменьше 0,01 мс
  • Сохранение теперь обновляет индексы только изменённой заметки.
  • Поиск идёт по заранее подготовленной копии текста в фоновом потоке, а ⌘P ставит совпадения по заголовку выше совпадений по тексту.
  • Библиотека читается параллельно под одним координатором на всю папку.
  • Редактор больше не пересоздаётся при переключении заметки. Mermaid, KaTeX и подсветка кода подгружаются, только когда заметка их использует, а превью перерисовывает только изменённые блоки.

Переключение режима с клавиатуры

⌥⌘P по кругу переключает редактор, сплит и чистовой просмотр. Курсор, выделение и прокрутка остаются на месте, так что после круга можно сразу продолжать печатать. ⌥⌘1, ⌥⌘2 и ⌥⌘3 включают режим напрямую.

Сохранность текста

Раз редактор стал общим для всех заметок окна, я отдельно проверил, что набранное нигде не теряется: при переключении заметок, закрытии окна, выходе из приложения, при синхронизации и правке через MCP. Если заметку меняют снаружи, пока ты печатаешь, текст остаётся в редакторе, а внешняя версия сохраняется в ревизиях. Ревью шло в четыре круга, пока не закрылась последняя щель.

Обновление придёт само, или скачайте его на drafta.org.