コンテンツにスキップ

Bench

Paneflow はパフォーマンス改善を形容詞ではなく数値で示します。以下の各スイートは、コミット済みのベースラインと最新コミットを同じマシンで、リポジトリ内のスクリプトから実行しています。まずはターミナルパイプラインから。スイートは今後追加していきます。

ターミナルパイプラインcb05be20
メトリクス削減
  1. 1アイドル時のウェイクアップ、表示専用ペイン
    98 % 64.0×
  2. 2キー入力エコー時の公開、220×60 ペイン
    95 % 20.0×
  3. 3行テキストの取得、220×60 ペイン
    92 % 11.8×
  4. 4アイドル時のウェイクアップ、プロンプト待ちのシェル
    86 % 7.11×
  5. 5断続的な出力に対する公開ゲート
    75 % 4.00×
  6. 6コーパスのスループット
    74 % 3.87×
  7. 7基本フォントの解決、フレームごと
    50 % 2.00×
  8. 8スクロール時の公開、120×40 ペイン
    50 % 1.98×
  9. 9スクロール時の公開、220×60 ペイン
    36 % 1.56×
  10. 10レイアウトパス、220×60 ペイン
    9.9 % 1.11×
図 1. メトリクスごとに削減したベースラインコストの割合。最新の実行をコミット済みのベースラインと比較。時間は release プロファイルでの中央値、アロケーション数は正確な値です。AMD Ryzen 7 7800X3D, Windows 11, release profile。

ターミナルパイプライン

PTY のバイト列からレンダラーが描画するレイアウトまで。スクロール時とキー入力エコー時のスナップショットとグリッド変換、ウィンドウなしのレイアウトパス、レンダースレッドが毎フレーム行う参照、断続的な出力に対する公開ペーシング、コーパスのスループット、アイドル状態のペインが起きる頻度を計測します。時間は release プロファイルでの中央値、アロケーション数は正確な値です。

すべてのメトリクス

ベースラインと最新を並べて表示します。代表値、p95 がある場合はその値、反復ごとのアロケーション。

メトリクスベースライン最新変化p95反復あたりアロケーション、ベースライン反復あたりアロケーション、最新
スクロール時の公開、220×60 ペイン700.7 µs448.0 µs-36.1 % 1.56×863.6 µs465.7 µs2.70 MiB266 B
キー入力エコー時の公開、220×60 ペイン166.0 µs8.3 µs-95.0 % 20.0×196.2 µs8.6 µs1.41 MiB106 B
スクロール時の公開、120×40 ペイン324.8 µs163.8 µs-49.6 % 1.98×377.1 µs169.8 µs1.02 MiB242 B
レイアウトパス、220×60 ペイン515.8 µs464.9 µs-9.9 % 1.11×632.3 µs481.3 µs164.8 KiB164.8 KiB
行テキストの取得、220×60 ペイン7.1 µs600 ns-91.5 % 11.8×9.1 µs600 ns4.3 KiB1.9 KiB
基本フォントの解決、フレームごと200 ns100 ns-50.0 % 2.00×200 ns100 ns152 B0 B
アクティブテーマの読み取り、フレームごと100 ns100 ns+0.0 % 1.00×100 ns100 ns0 B0 B
断続的な出力に対する公開ゲート1,000 フレーム / 1,000 チャンク250 フレーム / 1,000 チャンク-75.0 % 4.00×該当なし該当なし該当なし
コーパスのスループット0.2 MiB/s0.9 MiB/s+287.0 % 3.87×該当なし1.52 MiB2.8 KiB
アイドル時のウェイクアップ、表示専用ペイン64 回/秒1 回/秒-98.4 % 64.0×該当なし該当なし該当なし
アイドル時のウェイクアップ、プロンプト待ちのシェル64 回/秒9 回/秒-85.9 % 7.11×該当なし該当なし該当なし

スイートは今後追加していきます。それぞれにコミット済みのベースラインと保存済みの実行結果を、同じ形式で添えます。