Skip to content

Commit c3a1ccd

Browse files
Update README
Signed-off-by: Federico Bruzzone <federico.bruzzone.i@gmail.com>
1 parent 072befc commit c3a1ccd

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

README.md

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
[![GitHub CI][github-ci-shield]][github-ci]
77

88
This repository contains the artifact for the paper "Meta-monomorphizing Specializations".
9-
The artifact consists of two main components: a prototype implementation and an instrumentation tool for empirical analysis.
9+
The artifact consists of three main components: a prototype implementation, an instrumentation tool for empirical analysis, and a benchmark evaluation suite.
1010

1111
---
1212

@@ -18,6 +18,7 @@ The artifact consists of two main components: a prototype implementation and an
1818
- [Getting Started](#getting-started)
1919
- [Prototype Implementation (`spec-trait-impl`)](#prototype-implementation-spec-trait-impl)
2020
- [Instrumentation Tool (`spec-trait-inst`)](#instrumentation-tool-spec-trait-inst)
21+
- [Evaluation Benchmarks (`spec-trait-evaluation`)](#evaluation-benchmarks-spec-trait-evaluation)
2122
- [Reproducing the Empirical Evaluation](#reproducing-the-empirical-evaluation)
2223
- [Pre-computed Results](#pre-computed-results)
2324
- [Contact](#contact)
@@ -32,6 +33,8 @@ This artifact provides:
3233

3334
2. **`spec-trait-inst/`** — An instrumentation tool built as a `cargo`/`rustc` wrapper that statically analyzes Rust projects to identify trait specialization opportunities.
3435

36+
3. **`spec-trait-evaluation/`** — A benchmark suite that compares `spec!`/`#[when]` compile-time specialization against alternative dispatch strategies (naive, enum, runtime `TypeId`), measuring runtime performance, build time, and binary size. See the [evaluation README](spec-trait-evaluation/README.md) for details.
37+
3538
---
3639

3740
## Repository Structure
@@ -45,9 +48,15 @@ spec-trait/
4548
│ ├── spec-trait-order/ # Compile-time trait ordering
4649
│ └── spec-trait-utils/ # Shared utilities
4750
48-
└── spec-trait-inst/ # Instrumentation tool
49-
├── src/ # Source code
50-
└── tests/
51+
├── spec-trait-inst/ # Instrumentation tool
52+
│ ├── src/ # Source code
53+
│ └── tests/
54+
55+
└── spec-trait-evaluation/ # Benchmark evaluation suite
56+
├── benches-crate/ # Criterion benchmarks
57+
├── notebooks/ # Analysis notebooks
58+
├── results/ # Pre-computed CSV results
59+
└── scripts/ # Metric collection scripts
5160
├── scripts/ # Analysis scripts and results
5261
│ ├── analysis.sh # Main analysis script
5362
│ ├── repos.txt # List of repositories analyzed

spec-trait-evaluation/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ spec-trait-evaluation/
6565
# Runtime benchmarks (Criterion)
6666
cargo bench --manifest-path benches-crate/Cargo.toml --bench bench
6767
cargo bench --manifest-path benches-crate/Cargo.toml --bench bench -- --warm-up-time 1 --measurement-time 3 --sample-size 10
68+
cargo bench --manifest-path benches-crate/Cargo.toml --bench bench -- --warm-up-time 1 --measurement-time 3 --sample-size 10 <name_filter>
6869

6970
# Collect runtime CSV from Criterion output
7071
python3 scripts/collect_metrics.py \
@@ -82,7 +83,7 @@ bash scripts/measure_binary_size.sh 8
8283

8384
```bash
8485
pip install -r notebooks/requirements.txt
85-
jupyter notebook notebooks/eval.ipynb
86+
jupyter notebook notebooks/eval_pretty.ipynb
8687
```
8788

8889
## Benchmark parameters

0 commit comments

Comments
 (0)