#5350 closed Patches (fixed)
Patch for lexical_cast: additional optimizations
Reported by: | Owned by: | Antony Polukhin | |
---|---|---|---|
Milestone: | Boost 1.47.0 | Component: | lexical_cast |
Version: | Boost Development Trunk | Severity: | Optimization |
Keywords: | Cc: | antoshkka@… |
Description
Patch to Boost Lexical Cast library, that returns Target directly constructed from Source in cases, when:
1) Source and Target are arithmetics (and not char or wchar_t), and all values of Source are in range of Target
2) Source and Target are both char or both wchar_t
3) Source is array of CharT and Target is std::basic_string<CharT, ...>
4) Source and Target are std::basic_string with same template parameters
It gives performance boost more than 10 times in case 1), about 7 times in case 2), and about 1.5 times in cases 3) and 4).
Existing tests for Boost Lexical Cast library cover considered cases. Patch was successfully tested on Intel 11.1.072, g++-4.4.5, VC++9 compilers.
It has the same behaviour, when casting out of bounds (int -> unsigned int, int -> short, unsigned int -> int). For checking bounds it uses boost::numeric::conversion_traits from <boost/numeric/conversion/conversion_traits.hpp>
Closes the ticket #4397
Was discussed at Boost mailing list
Attachments (1)
Change History (4)
by , 12 years ago
Attachment: | lexical_cast.hpp.diff added |
---|
comment:1 by , 11 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
comment:2 by , 11 years ago
Milestone: | To Be Determined → Boost 1.47.0 |
---|---|
Resolution: | → fixed |
Status: | assigned → closed |
Patch for trunk version of lexical_cast (for revision 70337)