diff options
| author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2021-12-11 14:49:29 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-12-11 14:49:29 +0000 |
| commit | 9946def7e224a2009e7ca3ca7f4ac032aeb0eb42 (patch) | |
| tree | cbd99eb93557546ca7a8f8b3b9a32c06d328c361 /src/test/codegen/src-hash-algorithm | |
| parent | 31373271826691bece032326ec7b8d291441db6c (diff) | |
| parent | 278e7c33115a448eb7bbe6420404331c1820f1af (diff) | |
| download | rust-9946def7e224a2009e7ca3ca7f4ac032aeb0eb42.tar.gz rust-9946def7e224a2009e7ca3ca7f4ac032aeb0eb42.zip | |
Merge #10877
10877: feat: make hightlighting linear r=matklad a=matklad In https://youtu.be/qvIZZf5dmTE, we've noticed that AstIdMap does a linear lookup when going from SyntaxNode to Id. This leads to accidentally quadratic overall performance. Replace linear lookup with a O(1) hashmap lookup. Future work: don't duplicate `SyntaxNodePtr` in `AstIdMap` and switch to "call site dependency injection" style storage (eg, store a `HashSet<ErasedFileAstId>`). See the explanation of the work here on YouTube :-) As you can see from then benchmark results, this doesn't actually make analysis stats fastre. I am a bit mystified as to why this is happening to be honest. Baseline ``` Database loaded: 598.40ms, 304minstr, 118mb (metadata 390.57ms, 21minstr, 841kb; build 111.31ms, 8764kinstr, -214kb) crates: 39, mods: 824, decls: 18647, fns: 13910 Item Collection: 9.70s, 75ginstr, 377mb exprs: 382426, ??ty: 387 (0%), ?ty: 285 (0%), !ty: 145 Inference: 43.16s, 342ginstr, 641mb Total: 52.86s, 417ginstr, 1018mb ``` This PR: ``` Database loaded: 626.34ms, 304minstr, 118mb (metadata 416.26ms, 21minstr, 841kb; build 113.67ms, 8750kinstr, -209kb) crates: 39, mods: 824, decls: 18647, fns: 13910 Item Collection: 10.16s, 75ginstr, 389mb exprs: 382426, ??ty: 387 (0%), ?ty: 285 (0%), !ty: 145 Inference: 44.51s, 342ginstr, 644mb Total: 54.67s, 417ginstr, 1034mb ``` I think we probably should merge the first commit here, but not the second. Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
Diffstat (limited to 'src/test/codegen/src-hash-algorithm')
0 files changed, 0 insertions, 0 deletions
