第 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 ms | 0.019 ms / 0.025 ms | — | マイクロ秒スケール | |
| バックグラウンド解析 p50 | 0.208 ms | 0.102 ms | 39.602 ms | ~190x ~ 388x | |
| バックグラウンド解析 p95 | 0.274 ms | 0.120 ms | 41.117 ms | ~150x ~ 342x | |
| 100,000 行 (超長文ドキュメント) | コールドスタート(起動) | 1845.18 ms(1.84 秒) | 1228.56 ms | — | — |
| 即時応答(p50 / p95) | 0.037 ms / 0.050 ms | 0.019 ms / 0.024 ms | — | マイクロ秒スケール | |
| バックグラウンド解析 p50 | 0.703 ms | 0.137 ms | 497.175 ms | ~707x ~ 3629x | |
| バックグラウンド解析 p95 | 0.860 ms | 0.148 ms | 550.450 ms | ~640x ~ 3719x |
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 ms | 0.716 ms | 0.786 ms |
| 文字の挿入と削除の交互操作 | 0.038 ms | 0.712 ms | 1.218 ms |
| インライン強調記法の変更 | 0.038 ms | 0.716 ms | 0.934 ms |
| 複数段落にまたがるランダムな移動 | 0.044 ms | 0.466 ms | 0.626 ms |
| 構造的な見出しの書き換え | 0.085 ms | 997.10 ms | 1162.17 ms |
まとめ
- 日常的な高頻度の入力はきわめて滑らかです。文字入力、バックスペースでの削除、インラインの太字化、 段落をまたぐ編集では、バックグラウンド解析は 0.46 ms ~ 0.71 ms の範囲で安定し、 即時応答はわずか 38 マイクロ秒です。
-
構造の変更でも引っかかりません。
#を入力して見出しブロックの書き換えが始まると、 バックグラウンドはブロック全体を再計算する必要があります(約 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 には実行時のガベージコレクションがないため、ブラウザーエンジン製エディターのような周期的な引っかかりが生じません。 一般的なエディターと比較したコールドスタート時のメモリ使用量を以下に示します。
常駐メモリの目安は、軽いドキュメントで約 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 ms | 12 ~ 28 ms | 18 ~ 40 ms | 45 ~ 120 ms |
| 長時間の使用で遅くなるか | いいえ(ガベージコレクションなし) | 周期的なフレーム落ち | 周期的なフレーム落ち | 周期的なフレーム落ち | 頻繁な引っかかり |
| 数式 | 組み込みのネイティブ組版 | Web コンポーネントに依存 | Web コンポーネントに依存 | Web コンポーネントに依存 | オンラインでレンダリング |
| 図のレンダリング | ネイティブベクター描画 | Web コンポーネントの注入 | Web コンポーネントの注入 | Web コンポーネントの注入 | クラウド / スクリプト描画 |
| バージョン履歴 | 組み込みのタイムマシン、Git 不要 | Git かプラグインの導入が必要 | 基本的なスナップショット復元 | システムのバックアップのみに依存 | クラウドに依存 |
| PDF エクスポート | ネイティブベクター PDF | ブラウザーの印刷機能に依存 | ブラウザーの印刷機能に依存 | 外部ツールに依存 | Web ページへのエクスポートのみ |