Uh oh!
There was an error while loading. Please reload this page.
Avoid more allocations when compiling html5ever - #37373
Conversation
There was a problem hiding this comment.
I believe this means that we are now copying/moving the Vec; perhaps we only need &[TokenTree] here?
There was a problem hiding this comment.
The Vec gets put into the MatcherPos, so if it becomes a reference then MatcherPos will need a lifetime paramter and things get more complicated. Copying a Vec shouldn't be that expensive because only three words get copied, right? I did a Cachegrind run and this commit caused the number of instructions executed to drop.
There was a problem hiding this comment.
Cloning a Vec copies all the allocated elements. But it can probably use memcpy, so that should be fast.
There was a problem hiding this comment.
I was under the impression that passing a Vec as an argument to a function doesn't clone it. Have I got that wrong?
There was a problem hiding this comment.
oh right... forget I said anything, I thought the Rc was there to prevent the cloning.
leonardo-m
commented
Oct 24, 2016
Are those changes speeding up the compilation of other programs too? Optimizations should be added only after there's a more general proof of their quality. |
bluss
commented
Oct 24, 2016
It looks like SmallVec should impl Deref/DerefMut so that the .as_slice()/mut calls become redundant, and it's more of a drop in replacement for Vec. |
There was a problem hiding this comment.
this should be a simple ms.to_owned()
There was a problem hiding this comment.
And could this use SmallVector::one instead of zero and push?
nrc
commented
Oct 25, 2016
r=me with the nits in macro_parser.rs addressed |
74ecc3f to
d37650aCompareThis avoids 800,000 heap allocations when compiling html5ever.
This avoids 800,000 heap allocations when compiling html5ever. It requires tweaking `SmallVector` a little.
This avoids 800,000 allocations when compiling html5ever.
d37650a to
c440a7aComparennethercote
commented
Oct 25, 2016
Updated to address comments, including adding |
nrc
commented
Oct 25, 2016
@bors: r+ |
bors
commented
Oct 25, 2016
📌 Commit c440a7a has been approved by |
Avoid more allocations when compiling html5ever These three commits reduce the number of allocations performed when compiling html5ever from 13.2M to 10.8M, which speeds up compilation by about 2%. r? @nrc
bors
commented
Oct 29, 2016
Avoid more allocations when compiling html5ever These three commits reduce the number of allocations performed when compiling html5ever from 13.2M to 10.8M, which speeds up compilation by about 2%. r? @nrc
These three commits reduce the number of allocations performed when compiling html5ever from 13.2M to 10.8M, which speeds up compilation by about 2%.
r? @nrc