diff options
author | Norbert Preining <norbert@preining.info> | 2020-05-28 03:03:21 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2020-05-28 03:03:21 +0000 |
commit | 745892fbddea56040139108277e728b53fd8fc11 (patch) | |
tree | 15e55e299b38fccdabce8364f1fbf4f02ef37994 /support/texlab/benches | |
parent | 195ca7e0c377d83455867bdd8e409d4e1cf024ea (diff) |
CTAN sync 202005280303
Diffstat (limited to 'support/texlab/benches')
-rw-r--r-- | support/texlab/benches/bench_main.rs | 7 | ||||
-rw-r--r-- | support/texlab/benches/benchmarks/completion.rs | 135 | ||||
-rw-r--r-- | support/texlab/benches/benchmarks/mod.rs | 1 |
3 files changed, 143 insertions, 0 deletions
diff --git a/support/texlab/benches/bench_main.rs b/support/texlab/benches/bench_main.rs new file mode 100644 index 0000000000..a73dbc1aa9 --- /dev/null +++ b/support/texlab/benches/bench_main.rs @@ -0,0 +1,7 @@ +mod benchmarks; + +use criterion::criterion_main; + +criterion_main! { + benchmarks::completion::benches +} diff --git a/support/texlab/benches/benchmarks/completion.rs b/support/texlab/benches/benchmarks/completion.rs new file mode 100644 index 0000000000..4653102460 --- /dev/null +++ b/support/texlab/benches/benchmarks/completion.rs @@ -0,0 +1,135 @@ +use criterion::criterion_group; +use criterion::{BenchmarkId, Criterion}; +use futures::executor::block_on; +use indoc::indoc; +use std::time::Duration; +use texlab::{completion::CompletionProvider, feature::FeatureTester}; + +fn criterion_benchmark(criterion: &mut Criterion) { + criterion.bench_with_input( + BenchmarkId::new("Completion", "LaTeX Word"), + &LATEX_CODE, + |b, code| { + b.iter(|| { + block_on(async { + FeatureTester::new() + .file("main.tex", *code) + .main("main.tex") + .position(0, 0) + .test_completion(CompletionProvider::new()) + .await + }); + }); + }, + ); + + criterion.bench_with_input( + BenchmarkId::new("Completion", "LaTeX Command (Filtered)"), + &LATEX_CODE, + |b, code| { + b.iter(|| { + block_on(async { + FeatureTester::new() + .file("main.tex", *code) + .main("main.tex") + .position(0, 1) + .test_completion(CompletionProvider::new()) + .await + }); + }); + }, + ); + + criterion.bench_with_input( + BenchmarkId::new("Completion", "LaTeX Command (Unfiltered)"), + &LATEX_CODE, + |b, code| { + b.iter(|| { + block_on(async { + FeatureTester::new() + .file("main.tex", *code) + .main("main.tex") + .position(30, 1) + .test_completion(CompletionProvider::new()) + .await + }); + }); + }, + ); + + criterion.bench_with_input( + BenchmarkId::new("Completion", "LaTeX Environment"), + &LATEX_CODE, + |b, code| { + b.iter(|| { + block_on(async { + FeatureTester::new() + .file("main.tex", *code) + .main("main.tex") + .position(9, 9) + .test_completion(CompletionProvider::new()) + .await + }); + }) + }, + ); + + criterion.bench_with_input( + BenchmarkId::new("Completion", "LaTeX Label"), + &LATEX_CODE, + |b, code| { + b.iter(|| { + block_on(async { + FeatureTester::new() + .file("main.tex", *code) + .main("main.tex") + .position(15, 7) + .test_completion(CompletionProvider::new()) + .await + }); + }) + }, + ); +} + +criterion_group! { + name = benches; + config = Criterion::default().measurement_time(Duration::from_secs(60)); + targets = criterion_benchmark +} + +static LATEX_CODE: &str = indoc!( + r#" + \documentclass{article} + \usepackage{amsmath} + \usepackage{lipsum} + \usepackage{geometry} + \usepackage[utf8]{inputenc} + \newcommand{\foo}{foo} + \DeclareMathOperator{\bar}{bar} + \include{child1} + \input{child2.tex} + \begin{document} + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec fermentum lectus placerat, suscipit ligula quis. + \begin{equation*}\label{eq:foo} + e^{i \pi} + 1 = 0 + \end{equation*} + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec fermentum lectus placerat, suscipit ligula quis. + \ref{eq:foo} + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec fermentum lectus placerat, suscipit ligula quis. + \section{Foo}\label{sec:foo} + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec fermentum lectus placerat, suscipit ligula quis. + \subsection{Bar}\label{sec:bar} + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec fermentum lectus placerat, suscipit ligula quis. + \include{foo} + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec fermentum lectus placerat, suscipit ligula quis. + \input{bar.tex} + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec fermentum lectus placerat, suscipit ligula quis. + \cite{foo, bar, baz} + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec fermentum lectus placerat, suscipit ligula quis. + \nocite{*} + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec fermentum lectus placerat, suscipit ligula quis. + \end{document} + \ + "# +); diff --git a/support/texlab/benches/benchmarks/mod.rs b/support/texlab/benches/benchmarks/mod.rs new file mode 100644 index 0000000000..c893d109ab --- /dev/null +++ b/support/texlab/benches/benchmarks/mod.rs @@ -0,0 +1 @@ +pub mod completion; |