Skip to content

Commit

Permalink
Add completion benchmark
Browse files Browse the repository at this point in the history
  • Loading branch information
pfoerster committed May 30, 2019
1 parent 1a49194 commit 455d9fb
Show file tree
Hide file tree
Showing 15 changed files with 342 additions and 82 deletions.
146 changes: 146 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 8 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -39,5 +39,12 @@ url = "1.7.2"
url_serde = "0.2.0"
walkdir = "2"

[dev-dependencies]
criterion = "0.2"

[[bench]]
name = "completion"
harness = false

[profile.release]
lto = true
lto = true
98 changes: 98 additions & 0 deletions benches/completion.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
#![feature(await_macro, async_await)]

use criterion::{criterion_group, criterion_main, Criterion};
use futures::executor::block_on;
use lsp_types::*;
use texlab::scenario::Scenario;

fn initialize(name: &'static str) -> Scenario {
let scenario = block_on(Scenario::new("completion/bench"));
block_on(scenario.open(name));
scenario
}

fn run(scenario: &Scenario, name: &str, position: Position, has_items: bool) {
let uri = scenario.uri(name);
let params = CompletionParams {
text_document: TextDocumentIdentifier::new(uri),
position,
context: None,
};
let items = block_on(scenario.server.completion(params)).unwrap();
assert_eq!(items.items.len() > 0, has_items);
}

fn criterion_benchmark(criterion: &mut Criterion) {
let scenario = initialize("foo.tex");
criterion.bench_function("LaTeX word", move |b| {
b.iter(|| {
run(&scenario, "foo.tex", Position::new(5, 0), false);
});
});

let scenario = initialize("foo.tex");
criterion.bench_function("LaTeX command", move |b| {
b.iter(|| {
run(&scenario, "foo.tex", Position::new(6, 1), true);
})
});

let scenario = initialize("foo.tex");
criterion.bench_function("LaTeX argument symbol", move |b| {
b.iter(|| {
run(&scenario, "foo.tex", Position::new(7, 8), true);
});
});

let scenario = initialize("foo.tex");
criterion.bench_function("LaTeX environment", move |b| {
b.iter(|| {
run(&scenario, "foo.tex", Position::new(8, 7), true);
});
});

let scenario = initialize("foo.tex");
criterion.bench_function("LaTeX class import", move |b| {
b.iter(|| {
run(&scenario, "foo.tex", Position::new(9, 15), true);
});
});

let scenario = initialize("foo.tex");
criterion.bench_function("LaTeX package import", move |b| {
b.iter(|| {
run(&scenario, "foo.tex", Position::new(10, 12), true);
});
});

let scenario = initialize("foo.bib");
criterion.bench_function("BibTeX type", move |b| {
b.iter(|| {
run(&scenario, "foo.bib", Position::new(0, 1), true);
});
});

let scenario = initialize("foo.bib");
criterion.bench_function("BibTeX type", move |b| {
b.iter(|| {
run(&scenario, "foo.bib", Position::new(0, 1), true);
});
});

let scenario = initialize("foo.bib");
criterion.bench_function("BibTeX field", move |b| {
b.iter(|| {
run(&scenario, "foo.bib", Position::new(3, 5), true);
});
});

let scenario = initialize("foo.bib");
criterion.bench_function("BibTeX command", move |b| {
b.iter(|| {
run(&scenario, "foo.bib", Position::new(7, 14), true);
});
});
}

criterion_group!(benches, criterion_benchmark);
criterion_main!(benches);
10 changes: 5 additions & 5 deletions jsonrpc/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,11 @@ pub struct MessageHandler<S, C, I, O> {
}

impl<S, C, I, O> MessageHandler<S, C, I, O>
where
S: RequestHandler + ActionHandler + Send + Sync + 'static,
C: ResponseHandler + Send + Sync + 'static,
I: Input,
O: Output + 'static,
where
S: RequestHandler + ActionHandler + Send + Sync + 'static,
C: ResponseHandler + Send + Sync + 'static,
I: Input,
O: Output + 'static,
{
pub async fn listen(&mut self) {
while let Some(json) = await!(self.input.next()) {
Expand Down
9 changes: 9 additions & 0 deletions scenarios/completion/bench/foo.bib
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
@

@article{foo,
bar = baz,
}

@article{foo,
bar = {\baz},
}
13 changes: 13 additions & 0 deletions scenarios/completion/bench/foo.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
\documentclass{article}

\usepackage{amsmath}

\begin{document}

\
\mathbb{}
\begin{}
\documentclass{}
\usepackage{}

\end{document}
Loading

0 comments on commit 455d9fb

Please sign in to comment.