use criterion::{criterion_group, criterion_main, Criterion}; use pulldown_cmark::{html, Parser}; use std::fs::{read_dir, read_to_string}; pub fn markdown_it_samples(c: &mut Criterion) { let folder = read_dir("./third_party/markdown-it").unwrap(); for entry in folder { let entry = entry.unwrap(); if entry.metadata().unwrap().is_file() { let filename = &entry.file_name().into_string().unwrap(); if !filename.ends_with(".md") || filename == "README.md" { continue; } let corpus = read_to_string(entry.path()).unwrap(); let mut result = String::with_capacity(corpus.len() * 3 / 2); c.bench_function(filename, |b| { b.iter(|| { html::push_html(&mut result, Parser::new(&corpus)); }) }); } } } criterion_group!(benches, markdown_it_samples); criterion_main!(benches);