cooViewer-bench
XADMaster をオラクルにした SHA-256 突合と性能計測のハーネス
XADMaster SHA-256 oracle and benchmark harness
cooViewer-bench は、XADMaster を比較用のオラクルとして使う SHA-256 ハーネスと、XADMaster 時代の性能計測を再現するための独立リポジトリです。cooViewer は 2.0b37 以降 KaitoKit 単独になり XADMaster を含まなくなったため、Scripts/bench/ にあった全ファイルをこちらの bench/ へ移設しました。このリポジトリのビルド・計測に cooViewer 本体は不要です。
用途は二つあります。ひとつは bin/xadsha で書庫のエントリ別 SHA-256 と total を出し、KaitoKit の kaito sha や cooViewer の監査 TSV と照合して、展開内容・列挙順・名前の差を調べることです。もうひとつは xadbench などのハーネスと XADMaster のバリアント別ビルドを組み合わせ、性能に触る変更を実測して採否を判断することです。汎用の書庫ツールではなく、KaitoKit と cooViewer を検証するための作業用の道具として公開しています。
特徴
xadshaは書庫のエントリ別 SHA-256 と total を、KaitoKit のkaito shaと同じタブ区切り 4 列形式(index、size、sha256、name)で出力します。両コマンドの出力をdiff -uでそのまま突合できますxadbenchは open / data-open / extract / random / pextract の各モードを計測し、rep ごとの ms、総バイト、正しさダイジェストを JSON 1 行で出しますbuild-variant.shで XADMaster のバリアント(既定は O2 / ThinLTO)を作り、run-variant.shを交互に実行した結果をsummarize.pyが中央値・baseline 比・SHA-256 の相互検証でまとめますbitdiffは ASan + UBSan 下でビットリーダの新旧実装を並走比較する差分ハーネス、microbenchは CRC / inflate の実装を実データで比較するツールですcoldopen.shとpurge-cold.shで cold cache を計測できます。bench/results-2026-08-27/には性能監査の生データを同梱しています
対応環境と入手方法
Apple Silicon の Mac、macOS 26 以降、macOS 26 以降の SDK を含む Xcode が必要です。framework・ハーネスのバイナリは配布していません。リポジトリを submodule ごと clone し、XADMaster / UniversalDetector を Frameworks/ にビルドしてから、ハーネスを bin/ に作ります。
git clone --recursive https://github.com/shunnag/cooViewer-bench.git
cd cooViewer-bench
./build-xadmaster.sh
./build-harness.sh
bin/xadsha /path/to/archive.zip
submodule を初期化せず clone した場合は、先に git submodule update --init --recursive を実行してください。コーパス生成には Xcode の swiftc、標準の zip / sips、Python 3、7zz(brew install sevenzip)が必要です。ツールや任意依存がない対象は build-harness.sh が理由を表示してスキップし、利用可能な対象を続けます。
このリポジトリのスクリプトは MIT License です。submodule の XADMaster / UniversalDetector は LGPL 2.1 です。