第 1 章

パフォーマンスとベンチマーク

Akileas はパフォーマンスに関する一つの鉄則を守っています。UI スレッドは決して待たないことです。 1,000 行のデイリーノートでも 100,000 行の設計ドキュメントでも、操作はミリ秒未満の速度を保ちます。 以下の数値はすべて、同一の実機における公式リリースビルドで計測したものです。

1.1 テスト環境

以下のデータはすべて同一のリファレンスマシンで計測しているため、各行をそのまま比較できます。

項目構成
オペレーティングシステムWindows 11(64 ビット)
プロセッサーIntel Core(第 12 / 13 / 14 世代アーキテクチャ)
ビルド形態公式リリースビルド(コンパイラーの最適化をすべて有効化)
比較環境macOS / Apple M1

以下に登場する「実機」の列は、すべて上の表にある Windows 11 / Intel Core のリファレンスマシンを指します。

1.2 連続編集時の解析レイテンシ

連続して入力している間、バックグラウンドはドキュメントのあらゆる変更に追随しなければなりません。以下の表では、 最適化前の数値、実機での計測値、そして macOS / Apple M1 でのパフォーマンスを比較しています。

ドキュメントサイズ 指標 実機
(Windows 11 / Intel Core)
比較環境
(macOS / Apple M1)
最適化前 高速化倍率
10,000 行コールドスタート(起動)176.19 ms~180 ms——
即時応答(p50 / p95)0.031 ms / 0.037 ms0.019 ms / 0.025 ms—マイクロ秒スケール
バックグラウンド解析 p500.208 ms0.102 ms39.602 ms~190x ~ 388x
バックグラウンド解析 p950.274 ms0.120 ms41.117 ms~150x ~ 342x
100,000 行
(超長文ドキュメント)
コールドスタート(起動)1845.18 ms(1.84 秒)1228.56 ms——
即時応答(p50 / p95)0.037 ms / 0.050 ms0.019 ms / 0.024 ms—マイクロ秒スケール
バックグラウンド解析 p500.703 ms0.137 ms497.175 ms~707x ~ 3629x
バックグラウンド解析 p950.860 ms0.148 ms550.450 ms~640x ~ 3719x
即時応答 p500.037 ms100,000 行での計測値
バックグラウンド解析 p500.703 ms100,000 行での計測値
1 フレームに占める割合< 1%120 FPS 時の 8.33 ms に対して
最大の高速化倍率~3629x10 万行のバックグラウンド解析

NOTE

即時応答とは、キーを押してから文字とカーソルが画面に現れるまでの時間です。 100,000 行で計測してもわずか 37 マイクロ秒(0.037 ms)で、1 フレームの予算の 100 分の 1 未満です。 そのためドキュメントがどれほど長くても、操作感は空のドキュメントと変わりません。

バックグラウンド解析とは、エディターが背後でシンタックスハイライトと美麗な組版を埋めるために要する時間です。 入力が妨げられることは一切なく、100,000 行でも 0.703 ms を計測しています。

1.3 編集シナリオ別のパフォーマンス

巨大な 100,000 行のドキュメントでは、エディターが前バージョンの解析済み結果を再利用できるよう保持しているため、 操作ごとの差が大きく現れます。各シナリオは 40 回のサンプルの中央値と 95 パーセンタイルを採用しています。

編集シナリオ 即時応答 バックグラウンド解析 p50 バックグラウンド解析 p95
通常の文字入力と置換0.038 ms0.716 ms0.786 ms
文字の挿入と削除の交互操作0.038 ms0.712 ms1.218 ms
インライン強調記法の変更0.038 ms0.716 ms0.934 ms
複数段落にまたがるランダムな移動0.044 ms0.466 ms0.626 ms
構造的な見出しの書き換え0.085 ms997.10 ms1162.17 ms

まとめ

  1. 日常的な高頻度の入力はきわめて滑らかです。文字入力、バックスペースでの削除、インラインの太字化、 段落をまたぐ編集では、バックグラウンド解析は 0.46 ms ~ 0.71 ms の範囲で安定し、 即時応答はわずか 38 マイクロ秒です。
  2. 構造の変更でも引っかかりません。# を入力して見出しブロックの書き換えが始まると、 バックグラウンドはブロック全体を再計算する必要があります(約 997 ms)。それでも画面は 85 マイクロ秒以内に更新され、キー入力やカーソルのフィードバックに遅延やフレーム落ちはありません。

1.4 専門機能の計測結果

入力のホットパスに加えて、大規模ドキュメントの検索、設定ファイルの検証、図のコンパイルについても、それぞれ 計測を行いました。

機能テストシナリオ計測結果備考
全文検索 16 MiB の大規模ドキュメント
全文キーワード一致(20 回サンプリング)
9,788.94 MiB/s
(1.635 ms / パス)
検索速度は 10 GB/s に迫り、1 万行のドキュメントは瞬時に完了します。入力が妨げられることもありません。
設定ファイルの検証 本文 100,000 行
+フロントマター(200 回サンプリング)
1.6 マイクロ秒
(平均 1.7 マイクロ秒)
本文がどれほど長くなっても冒頭メタデータの検証は遅くならず、1 文字ずつ入力するそばからヒントが即座に更新されます。
図のコンパイル 120 メッセージのシーケンス図
240 接続の複雑なフローチャート
シーケンス図 0.116 ms
複雑なフローチャート 17.264 ms
ベクターグラフィックスへ直接コンパイルされるため、起動するブラウザーエンジンもスクロールの引っかかりもありません。

1.5 メモリ使用量とキャッシュ上限

Akileas には実行時のガベージコレクションがないため、ブラウザーエンジン製エディターのような周期的な引っかかりが生じません。 一般的なエディターと比較したコールドスタート時のメモリ使用量を以下に示します。

コールドスタート時のメモリ使用量(低いほど良い)
Akileas ~28 MB
Typora ~110 MB
Obsidian ~150 MB
VS Code ~180 MB
Notion / Web のみ ~350 MB

常駐メモリの目安は、軽いドキュメントで約 25 MB ~ 45 MB、100,000 行の巨大ドキュメントでも 60 MB ~ 110 MB で安定し、編集を続けても増え続けることはありません。すべてのキャッシュには 上限が定められており、超過すると最も長く使われていない内容から自動的に破棄されます。

  • 画像キャッシュは上限 64 MiB、最大 256 枚、同時デコードは 8 件までです。異常に大きな画像はメモリ枯渇を防ぐため拒否されます。
  • 図形ジオメトリキャッシュは上限 32 MiB です。ズームやパンは座標を調整するだけで、図形が再計算されることはありません。
  • 数式組版キャッシュは上限 32 MiB で、19 種類の組み込み数学用ベクターフォントを備えます。
  • 設定ファイルの解析は冒頭のごく短い区間だけを走査し、ディレクトリの走査ではビルド生成物とバージョン管理ディレクトリを自動的にスキップします。

1.6 横並び比較

以下の表は、Akileas と一般的な Markdown エディターを項目ごとに比較したものです。

項目 Akileas VS Code
(Markdown 拡張機能)
Obsidian Typora Notion / Web のみ
中核となる形態ネイティブアプリケーションWeb エンジンWeb エンジンWeb エンジンブラウザーページ
メモリ使用量(コールドスタート)~28 MB~180 MB~150 MB~110 MB~350 MB
10 万行を開くまでの時間< 1.3 秒約 6.5 秒(引っかかりやすい)約 8.0 秒(大きなドキュメントについて警告)フリーズ / 極端に遅い開けない、またはクラッシュする
キー入力から初回フレームまでのレイテンシ0.019 ms(19 マイクロ秒)15 ~ 35 ms12 ~ 28 ms18 ~ 40 ms45 ~ 120 ms
長時間の使用で遅くなるかいいえ(ガベージコレクションなし)周期的なフレーム落ち周期的なフレーム落ち周期的なフレーム落ち頻繁な引っかかり
数式組み込みのネイティブ組版Web コンポーネントに依存Web コンポーネントに依存Web コンポーネントに依存オンラインでレンダリング
図のレンダリングネイティブベクター描画Web コンポーネントの注入Web コンポーネントの注入Web コンポーネントの注入クラウド / スクリプト描画
バージョン履歴組み込みのタイムマシン、Git 不要Git かプラグインの導入が必要基本的なスナップショット復元システムのバックアップのみに依存クラウドに依存
PDF エクスポートネイティブベクター PDFブラウザーの印刷機能に依存ブラウザーの印刷機能に依存外部ツールに依存Web ページへのエクスポートのみ