use criterion::{criterion_group, criterion_main, Criterion};
use pulldown_latex::parser::Parser;
fn match_on_greek(c: &mut Criterion) {
c.bench_function("match on greek", |b| b.iter(|| {
let storage = pulldown_latex::Storage::new();
let parser = Parser::new(r"
\alpha \beta \gamma \delta \epsilon \zeta \eta \theta
\iota \kappa \lambda \mu \nu \xi \omicron \pi
\rho \sigma \tau \upsilon \phi \chi \psi \omega
\Alpha \Beta \Gamma \Delta \Epsilon \Zeta \Eta \Theta
\Iota \Kappa \Lambda \Mu \Nu \Xi \Omicron \Pi
\Rho \Sigma \Tau \Upsilon \Phi \Chi \Psi \Omega
\varGamma \varDelta \varTheta \varLambda \varXi \varPi \varSigma \varUpsilon \varPhi \varPsi \varOmega
\varepsilon \vartheta \varkappa \varrho \varsigma \varpi \digamma \varphi
\alpha \beta \gamma \delta \epsilon \zeta \eta \theta
\alpha \beta \gamma \delta \epsilon \zeta \eta \theta
\iota \kappa \lambda \mu \nu \xi \omicron \pi
\rho \sigma \tau \upsilon \phi \chi \psi \omega
\Alpha \Beta \Gamma \Delta \Epsilon \Zeta \Eta \Theta
\Iota \Kappa \Lambda \Mu \Nu \Xi \Omicron \Pi
\Rho \Sigma \Tau \Upsilon \Phi \Chi \Psi \Omega
\varGamma \varDelta \varTheta \varLambda \varXi \varPi \varSigma \varUpsilon \varPhi \varPsi \varOmega
\varepsilon \vartheta \varkappa \varrho \varsigma \varpi \digamma \varphi
\iota \kappa \lambda \mu \nu \xi \omicron \pi
\rho \sigma \tau \upsilon \phi \chi \psi \omega
\Alpha \Beta \Gamma \Delta \Epsilon \Zeta \Eta \Theta
\Iota \Kappa \Lambda \Mu \Nu \Xi \Omicron \Pi
", &storage);
let mut str = String::new();
pulldown_latex::mathml::push_mathml(&mut str, parser, Default::default()).unwrap();
}));
}
fn subscript_torture(c: &mut Criterion) {
c.bench_function("subscript torture", |b| {
b.iter(|| {
let storage = pulldown_latex::Storage::new();
let parser = Parser::new("a_{5_{5_{5_{5_{5_{5_{5_{5_{5_{5_{5_5}}}}}}}}}}}", &storage);
let mut str = String::new();
pulldown_latex::mathml::push_mathml(&mut str, parser, Default::default()).unwrap();
})
});
}
fn basic_macro(c: &mut Criterion) {
c.bench_function("basic macro", |b| {
b.iter(|| {
let storage = pulldown_latex::Storage::new();
let parser = Parser::new(
r"\def\d{\mathrm{d}}
\oint_C \vec{B}\circ \d\vec{l} = \mu_0 \left( I_{\text{enc}}
+ \varepsilon_0 \frac{\d}{\d t} \int_S {\vec{E} \circ \hat{n}}\;
\d a \right)",
&storage,
);
let mut str = String::new();
pulldown_latex::mathml::push_mathml(&mut str, parser, Default::default()).unwrap();
})
});
}
criterion_group!(benches, basic_macro, match_on_greek, subscript_torture);
criterion_main!(benches);