Replace slower boost::lexical_cast with stdlib conversions #3997
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.
Pull Request Prelude
Changes Proposed
Replaces the slow
boost::lexical_cast
calls with standard library functions for a... boost in performance! Results vary from type to type, on my machine it is at least 2x faster across the board for integers, and 150x faster for bytes (signed and unsigned char), and 8x faster for floats. The difference is slightly smaller on godbolt as you can see.Yes, it is necessary to specify both
char
andsigned char
because they might not map to the same type (on my machine,int8_t
maps tosigned char
and thechar
-only version does not apply). Same goes forint
andlong
.This is not on a critical path and the improvement might not be significant. Notably, it may speed up XML parsing (which is fast anyway) and loading data from the database.