///|
pub fn run_benchmarks() -> BenchmarkReport {
let measurements : Array[BenchmarkMeasurement] = []
for item in benchmark_sizes() {
let (name, token_count) = item
measurements.push(run_benchmark_case(name, token_count))
}
{ toolchain: "moonbit-brandbook " + version(), measurements }
}
///|
fn run_benchmark_case(name : String, token_count : Int) -> BenchmarkMeasurement {
let source = benchmark_fixture_json(token_count)
let start = @env.now()
let parsed = parse_brand_document(source)
let output = match parsed.value {
Some(book) =>
book.to_html() + book.to_theme_json() + book.to_tailwind_theme()
None => diagnostics_to_text(parsed.diagnostics)
}
let elapsed = @env.now() - start
{
name,
operations: 3,
token_count,
input_bytes: source.length(),
output_bytes: output.length(),
elapsed_units: elapsed,
}
}