Specialize target and level arguments that can be statically determined #603
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.
This PR intends to optimize binary size by avoiding passing target and level arguments if they can be determined statically.
I have rewritten the implementation of the log macros to parse each argument separately in order to map macro arguments to the underlying
__private_api::log
function arguments.Here is the binary size result tested using https://github.com/EFanZh/log/tree/binary-size-test/cargo-binstall:
Here is the runtime performance benchmark result tested using https://github.com/EFanZh/log/tree/benchmark.
Note that I have added
#[inline(never)]
to thelog
function to prevent the compiler from callinglog_impl
directly which could affect the optimization. Without#[inline(never)]
, the binary size change will be:Personally, I prefer keeping
#[inline(never)]
, since it has better binary size, and no significant performance cost.