blob: d0b8dfcb8069192cb8c0ee4678383df5a0b66323 [file] [log] [blame]
#![feature(test)]
extern crate pulldown_cmark;
extern crate test;
mod to_html {
use pulldown_cmark::{html, Options, Parser};
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
}
#[bench]
fn pathological_codeblocks1(b: &mut test::Bencher) {
// Note that `buf` grows quadratically with number of
// iterations. The point here is that the render time shouldn't
// grow faster than that.
let mut buf = String::new();
for i in 1..1000 {
for _ in 0..i {
buf.push('`');
}
buf.push(' ');
}
b.iter(|| render_html(&buf, Options::empty()));
}
#[bench]
fn advanced_pathological_codeblocks(b: &mut test::Bencher) {
let mut buf = String::new();
let mut i = 1;
while buf.len() < 1250 {
for _ in 0..i {
buf.push('`');
}
buf.push(' ');
i += 1;
}
for _ in 0..buf.len() {
buf.push_str("*a* ");
}
b.iter(|| render_html(&buf, Options::empty()));
}
}