///|
fn main {
let runner = @moonbench.BenchmarkRunner::new(warmup=1, iterations=3)
let mut small_counter = 0
let small = runner.run_timed("counter/small-step", () => {
small_counter = small_counter + 1
ignore(small_counter)
})
let mut batch_counter = 0
let batch = runner.run_timed("counter/batch-step", () => {
for _ in 0..<100 {
batch_counter = batch_counter + 1
}
ignore(batch_counter)
})
let suite = @moonbench.BenchmarkSuite::new(
title="MoonBench demo report",
package_name="Han-Wentao/moonbench",
package_version="0.3.0",
target="wasm-gc",
note="Generated by cmd/main",
)
.add(small)
.add(batch)
let baseline_text = @moonbench.BaselineSet::new()
.add("counter/small-step", small.stats.mean_us)
.add("counter/batch-step", batch.stats.mean_us * 1.10)
.to_text()
let baselines = @moonbench.BaselineSet::parse_text(baseline_text).baselines
let comparison = baselines.compare_suite(suite, tolerance_pct=5.0)
let gate = @moonbench.GateReport::from_comparison_report(
comparison,
policy=@moonbench.ThresholdPolicy::balanced(),
)
let scenarios = @moonbench.ScenarioCatalog::moonbench_standard().filter_priority(
85,
)
let scorecard = @moonbench.ProjectScorecard::moonbench_standard(
actual_loc=4800,
)
let summary = @moonbench.ReviewerSummary::moonbench_standard()
println(suite.to_markdown())
println(comparison.to_markdown())
println(gate.to_markdown())
println(scenarios.to_markdown())
println(scorecard.to_markdown())
println(summary.to_markdown())
println("CSV artifact:")
println(suite.to_csv())
println("JSON artifact:")
println(suite.to_json())
}