親イシュー: #29
依存: #30 (P0), #32 (P3)
概要
result.cc が10プロトコルに全コピー存在し、違いはグローバル変数名(SiloResult、CicadaResult 等)のみ。ワークロードエントリポイント(~100行)もスレッド生成・バリア・時間ループ・集計ロジックがプロトコル間でほぼ共通。common/runner.hh テンプレートを導入することで、各ワークロードエントリを数行に削減できる。
やること
// silo/ycsb_silo.cc のイメージ
#include "common/runner.hh"
#include "silo/silo_tx.hh"
int main(int argc, char** argv) {
return ccbench::run<silo::TxExecutor, ccbench::YcsbWorkload>(argc, argv);
}
完了条件
- 各プロトコルの
result.cc が削除されること
- 各ワークロードエントリポイントが数行になること
- 全プロトコルのビルドが通ること
- CI が通ること
備考
- P5(プロトコル生成スクリプト)の前提となるタスク
親イシュー: #29
依存: #30 (P0), #32 (P3)
概要
result.ccが10プロトコルに全コピー存在し、違いはグローバル変数名(SiloResult、CicadaResult等)のみ。ワークロードエントリポイント(~100行)もスレッド生成・バリア・時間ループ・集計ロジックがプロトコル間でほぼ共通。common/runner.hhテンプレートを導入することで、各ワークロードエントリを数行に削減できる。やること
common/result.hh/common/result.ccに共通Result型と集計関数を集約し、per-protocolのSiloResult等を共通ベクターに統合するcommon/runner.hhにスレッド生成・バリア・時間ループ・集計をテンプレート化するpre_reserve_version等)をper-protocolポリシー/トレイトに封じ込めるresult.cc・*_<protocol>.ccを新テンプレートで書き直す完了条件
result.ccが削除されること備考