diff options
author | Aleksey Kladov <[email protected]> | 2021-02-09 18:52:34 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2021-02-09 18:52:34 +0000 |
commit | 61f15b72ac52c23148038b3867198597b345e2f6 (patch) | |
tree | 0935428e6e79a42da638a5c983ec526c64f10abb /crates/ide/src/syntax_highlighting | |
parent | 4b1279d0b160d98c1429ca1a52b37aa7a0af5775 (diff) |
Add parsing benchmark
Diffstat (limited to 'crates/ide/src/syntax_highlighting')
-rw-r--r-- | crates/ide/src/syntax_highlighting/tests.rs | 37 |
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 @@ | |||
1 | use expect_test::{expect_file, ExpectFile}; | 1 | use expect_test::{expect_file, ExpectFile}; |
2 | use ide_db::SymbolKind; | ||
2 | use test_utils::{bench, bench_fixture, skip_slow_tests}; | 3 | use test_utils::{bench, bench_fixture, skip_slow_tests}; |
3 | 4 | ||
4 | use crate::{fixture, FileRange, TextRange}; | 5 | use crate::{fixture, FileRange, HlTag, TextRange}; |
5 | 6 | ||
6 | #[test] | 7 | #[test] |
7 | fn test_highlighting() { | 8 | fn test_highlighting() { |
@@ -226,7 +227,7 @@ fn bar() { | |||
226 | } | 227 | } |
227 | 228 | ||
228 | #[test] | 229 | #[test] |
229 | fn benchmark_syntax_highlighting() { | 230 | fn 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] | ||
251 | fn 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] |