aboutsummaryrefslogtreecommitdiff
path: root/crates/ide/src/syntax_highlighting
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2021-02-09 18:52:34 +0000
committerAleksey Kladov <[email protected]>2021-02-09 18:52:34 +0000
commit61f15b72ac52c23148038b3867198597b345e2f6 (patch)
tree0935428e6e79a42da638a5c983ec526c64f10abb /crates/ide/src/syntax_highlighting
parent4b1279d0b160d98c1429ca1a52b37aa7a0af5775 (diff)
Add parsing benchmark
Diffstat (limited to 'crates/ide/src/syntax_highlighting')
-rw-r--r--crates/ide/src/syntax_highlighting/tests.rs37
1 files changed, 32 insertions, 5 deletions
diff --git a/crates/ide/src/syntax_highlighting/tests.rs b/crates/ide/src/syntax_highlighting/tests.rs
index 4a1229a31..9d0cd1af5 100644
--- a/crates/ide/src/syntax_highlighting/tests.rs
+++ b/crates/ide/src/syntax_highlighting/tests.rs
@@ -1,7 +1,8 @@
1use expect_test::{expect_file, ExpectFile}; 1use expect_test::{expect_file, ExpectFile};
2use ide_db::SymbolKind;
2use test_utils::{bench, bench_fixture, skip_slow_tests}; 3use test_utils::{bench, bench_fixture, skip_slow_tests};
3 4
4use crate::{fixture, FileRange, TextRange}; 5use crate::{fixture, FileRange, HlTag, TextRange};
5 6
6#[test] 7#[test]
7fn test_highlighting() { 8fn test_highlighting() {
@@ -226,7 +227,7 @@ fn bar() {
226} 227}
227 228
228#[test] 229#[test]
229fn benchmark_syntax_highlighting() { 230fn benchmark_syntax_highlighting_long_struct() {
230 if skip_slow_tests() { 231 if skip_slow_tests() {
231 return; 232 return;
232 } 233 }
@@ -235,10 +236,36 @@ fn benchmark_syntax_highlighting() {
235 let (analysis, file_id) = fixture::file(&fixture); 236 let (analysis, file_id) = fixture::file(&fixture);
236 237
237 let hash = { 238 let hash = {
238 let _pt = bench("syntax highlighting"); 239 let _pt = bench("syntax highlighting long struct");
239 analysis.highlight(file_id).unwrap().len() 240 analysis
241 .highlight(file_id)
242 .unwrap()
243 .iter()
244 .filter(|it| it.highlight.tag == HlTag::Symbol(SymbolKind::Struct))
245 .count()
240 }; 246 };
241 assert_eq!(hash, 32009); 247 assert_eq!(hash, 2001);
248}
249
250#[test]
251fn benchmark_syntax_highlighting_parser() {
252 if skip_slow_tests() {
253 return;
254 }
255
256 let fixture = bench_fixture::glorious_old_parser();
257 let (analysis, file_id) = fixture::file(&fixture);
258
259 let hash = {
260 let _pt = bench("syntax highlighting parser");
261 analysis
262 .highlight(file_id)
263 .unwrap()
264 .iter()
265 .filter(|it| it.highlight.tag == HlTag::Symbol(SymbolKind::Function))
266 .count()
267 };
268 assert_eq!(hash, 1629);
242} 269}
243 270
244#[test] 271#[test]