Optimize release and benchmark builds #310
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I've added some options in
Cargo.toml
to optimize the performance of release and benchmark builds.lto
or link time optimizations, allows optimizations across codegen units and even languages (for example when we are using v8). It also inlines most of the functions. See this and thiscodegen-units
Disallows the compiler to split code in multiple codegen-units, which results in a bit better performence.opt-level
Level at which the compiler optimizes things. (e.g unrolling loops, ...)This of course causes the build to take much longer. From my measurements a full release build takes about 23.3s instead of 10.8s on my machine. A rebuild (with some dependencies already built) takes 17.3s instead of 2.8s.
Development builds are untouched, so they only take 6.2s with or without these options.
The benchmark results go up ~10-11%.
Benchmark results
TreeIterator - wikipedia
TreeIterator - stackoverflow
TreeConstructor
Tokenizer