cooViewer-bench

XADMaster をオラクルにした SHA-256 突合と性能計測のハーネス

XADMaster SHA-256 oracle and benchmark harness

対応環境
macOS 26 以降 / Apple Silicon / Xcode
最新リリース
準備中
ライセンス
MIT
言語
C / Shell / Objective-C / Swift / Python
更新
2026-09-15

GitHub で見る

cooViewer-bench の概要図。書庫を XADMaster オラクル(xadsha)と KaitoKit(kaito sha)の両方で展開して SHA-256 を照合する流れと、性能計測の項目
同じ書庫を XADMaster と KaitoKit で展開し、entry ごとの SHA-256 を突合する。下段は性能計測の道具(図解)

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 です。