summaryrefslogtreecommitdiff
path: root/support/texlab/benches/bench_main.rs
blob: 44364c5d5e44df4d7dc890217db71fe7695df9b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
use std::sync::Arc;

use criterion::{black_box, criterion_group, criterion_main, Criterion};
use lsp_types::{
    CompletionParams, Position, TextDocumentIdentifier, TextDocumentPositionParams, Url,
};
use texlab::{features::FeatureRequest, syntax::latex, DocumentLanguage, Workspace};

fn criterion_benchmark(c: &mut Criterion) {
    c.bench_function("LaTeX/Parser", |b| {
        b.iter(|| latex::parse(black_box(include_str!("../texlab.tex"))));
    });

    c.bench_function("LaTeX/Completion/Command", |b| {
        let uri = Arc::new(Url::parse("http://example.com/texlab.tex").unwrap());
        let text = Arc::new(include_str!("../texlab.tex").to_string());
        let mut workspace = Workspace::default();
        workspace
            .open(Arc::clone(&uri), text, DocumentLanguage::Latex)
            .unwrap();

        b.iter(|| {
            texlab::features::complete(FeatureRequest {
                params: CompletionParams {
                    context: None,
                    partial_result_params: Default::default(),
                    work_done_progress_params: Default::default(),
                    text_document_position: TextDocumentPositionParams::new(
                        TextDocumentIdentifier::new(uri.as_ref().clone()),
                        Position::new(0, 1),
                    ),
                },
                workspace: workspace.clone(),
                uri: Arc::clone(&uri),
            })
        });
    });
}

criterion_group!(benches, criterion_benchmark);

criterion_main!(benches);