ベンチマーク
Celox は、各バックエンドおよび Verilator との間でコンパイル時間とシミュレーション 速度を継続的に計測しています。ダッシュボードは傾向の確認に使うもので、すべての RTL 設計の性能を予測するものではありません。
ダッシュボード
完全なベンチマーク行列と履歴の生データは 外部ダッシュボードで確認できます。
ワークロード
| グループ | 測定対象 |
|---|---|
| コンパイル時間 (CodSpeed) | フロントエンド、最適化、レイアウト、native/Cranelift コード生成の全工程 |
| Counter | 順序状態の更新とクロックイベントのオーバーヘッド |
| 標準ライブラリ | 組み合わせ回路、順序回路、構造化データパス |
| TypeScript テストベンチ | N-API 呼び出し、型付き信号アクセス、スケジューラ |
| Verilator 比較 | 同等の生成シミュレータによる基準値 |
| Heliodor Linux | 設計全体のコンパイル、ホスト側テストベンチを含む実行時間、tiered の起動時間・総時間 |
コンパイルと実行は分けて報告します。コンパイルが速くても生成コードが速いとは 限らず、マイクロベンチマークだけで設計全体の性能は判断できません。
結果の読み方
通常の Benchmark workflow は Rust・Verilator・TypeScript を一つのジョブで順番に 実行するため、その run 内では同じ VM・CPU で比較できます。CPU とランナーの情報は bench-host 成果物に保存します。別 run は異なる CPU に割り当てられる場合があるため、 履歴の小さな差だけでコミットの効果を判断しないでください。 大規模な Heliodor も時間内に収まる構成は 同じホストで比較します。ARM の 4 hart は 2 組、8 hart はバックエンド別のジョブに分け、 同じグループ内で同じ CPU を使います。
- 同じワークロード、バックエンド、リビジョン、ホスト環境を比較する。
- 共有 CI ランナー上の小さな差は、再現するまでノイズとして扱う。
- 実行速度は十分に長いワークロードで判断する。
- 開発時の反復時間にはシミュレータ作成時間も含める。
- 最適化設定は実際に使う設計で検証する。
Heliodor では固定入力の追加ワークロードを使います。測定方法は Heliodor Linux ベンチマークを参照してください。 ダッシュボードではネイティブバックエンドと同期版の Veryl-CC を比較し、Celox と Veryl-CC の tiered 実行では開始までの時間と完了までの総時間も表示します。 Cranelift 単独の起動時間は大幅に長く、この比較用グラフを読みにくくするため掲載しません。 Heliodor のグラフは、異なるランナー間の結果を直接比較しないよう CPU アーキテクチャ別に分けています。すべてのグラフの値軸は 0 から始まります。
ローカル実行
# CodSpeed によるコンパイル時間ベンチマーク
cargo install cargo-codspeed --locked --version 5.0.1
cargo codspeed build --locked -p celox --bench compilation
cargo codspeed run -p celox
# Rust ベンチマーク
cargo bench -p celox
# TypeScript / N-API ベンチマーク
pnpm bench
# Verilator 比較(Verilator と C++ ツールチェーンが必要)
bash scripts/run-verilator-bench.sh
# VCD 比較(Python 3 も必要。波形の一致を検証してから計測)
python3 scripts/compare-vcd-verilator.pyVCD の測定条件と結果には、 idle・sparse・dense の各負荷で、記録なし/ありを比較した結果をまとめています。
CodSpeed ワークフローは毎日 02:17 UTC(11:17 JST)にデフォルトブランチで 実行し、任意のブランチでの手動実行にも対応します。pull request、merge queue、 push では実行しません。決定的な CPU simulation の測定結果を CodSpeed に送信し、 リポジトリの CodSpeed 回帰しきい値に従って過去の測定と比較します。 master と develop では、実行失敗や性能解析の失敗時に CodSpeed is failing on <branch> Issue を作成・更新し、次の実行と解析が 成功すると閉じます。解析結果の欠落や未完了も失敗として報告します。 Issue には実行へのリンクと、性能低下の場合は比較結果とベンチマークの詳細を 含めます。ローカル実行ではベンチマーク suite が動作することだけを確認します。
ローカル計測は、同じマシン上で 2 つのリビジョンを比較する場合に最も有効です。 CI 履歴は、単発の小さな差より長期的な傾向の確認に向いています。