diff options
Diffstat (limited to 'vendor/pulldown-cmark/benches/lib.rs')
-rw-r--r-- | vendor/pulldown-cmark/benches/lib.rs | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/vendor/pulldown-cmark/benches/lib.rs b/vendor/pulldown-cmark/benches/lib.rs new file mode 100644 index 000000000..f084fe283 --- /dev/null +++ b/vendor/pulldown-cmark/benches/lib.rs @@ -0,0 +1,51 @@ +use criterion::{criterion_group, criterion_main}; + +mod to_html { + use criterion::{BenchmarkId, Criterion, Throughput}; + use pulldown_cmark::{html, Options, Parser}; + + pub fn pathological_codeblocks1(c: &mut Criterion) { + let mut group = c.benchmark_group("pathological_codeblocks1"); + let mut buf = String::new(); + for i in 1..10 { + buf.push_str(&"`".repeat(i * 100)); + buf.push(' '); + group.throughput(Throughput::Bytes(buf.len() as u64)); + group.bench_with_input(BenchmarkId::from_parameter(i), &buf, |b, buf| { + b.iter(|| render_html(&buf, Options::empty())); + }); + } + group.finish(); + } + + pub fn advanced_pathological_codeblocks(c: &mut Criterion) { + let mut group = c.benchmark_group("advanced_pathological_codeblocks"); + let mut buf = String::new(); + let mut i = 1; + while buf.len() < 1250 { + buf.push_str(&"`".repeat(i)); + buf.push(' '); + i += 1; + buf.push_str(&"*a* ".repeat(buf.len())); + group.throughput(Throughput::Bytes(buf.len() as u64)); + group.bench_with_input(BenchmarkId::from_parameter(i), &buf, |b, buf| { + b.iter(|| render_html(&buf, Options::empty())); + }); + } + group.finish(); + } + + fn render_html(text: &str, opts: Options) -> String { + let mut s = String::with_capacity(text.len() * 3 / 2); + let p = Parser::new_ext(text, opts); + html::push_html(&mut s, p); + s + } +} + +criterion_group!( + benches, + to_html::pathological_codeblocks1, + to_html::advanced_pathological_codeblocks +); +criterion_main!(benches); |