diff --git a/tools/lsp/Cargo.toml b/tools/lsp/Cargo.toml index 9c857efc..984265a5 100644 --- a/tools/lsp/Cargo.toml +++ b/tools/lsp/Cargo.toml @@ -27,3 +27,7 @@ criterion = "0.8.2" [[bench]] name = "bench" harness = false + +[[bench]] +name = "bench_diagnostic" +harness = false diff --git a/tools/lsp/benches/bench_diagnostic.rs b/tools/lsp/benches/bench_diagnostic.rs new file mode 100644 index 00000000..b46a782d --- /dev/null +++ b/tools/lsp/benches/bench_diagnostic.rs @@ -0,0 +1,17 @@ +use criterion::{criterion_group, criterion_main, Criterion}; + +fn criterion_benchmark(c: &mut Criterion) { + let s = String::from("warning"); + let target = "warning"; + + c.bench_function("contains", |b| { + b.iter(|| std::hint::black_box(&s).contains(std::hint::black_box(target))) + }); + + c.bench_function("eq", |b| { + b.iter(|| std::hint::black_box(&s) == std::hint::black_box(target)) + }); +} + +criterion_group!(benches, criterion_benchmark); +criterion_main!(benches); diff --git a/tools/lsp/src/lib.rs b/tools/lsp/src/lib.rs index 9e8845d5..7c3d18c5 100644 --- a/tools/lsp/src/lib.rs +++ b/tools/lsp/src/lib.rs @@ -1431,7 +1431,7 @@ impl LanguageServer for Backend { for diagnostic in params.context.diagnostics { if let Some(ref code) = diagnostic.code { if let NumberOrString::String(ref s) = code { - if s.contains("warning") { + if s == "warning" { let mut const_edits = Vec::new(); const_edits.push(TextEdit { range: diagnostic.range,