mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-12-30 12:07:34 +00:00
f87d30cba2
Summary: This change partially inlines operator=(const basic_string&) where both the input and current instance are short strings, making the assignment a fixed length inlined memcpy. Assignments where either of the strings are long are delegate to __assign_no_alias<__is_short>(), which is templated for the long / short branch already observed in the caller. Stable: ``` -------------------------------------------------------------------------------- Benchmark Time CPU Iterations -------------------------------------------------------------------------------- BM_StringAssignStr_Empty_Opaque 2.65 ns 2.66 ns 263745536 BM_StringAssignStr_Empty_Transparent 2.95 ns 2.96 ns 236494848 BM_StringAssignStr_Small_Opaque 2.93 ns 2.94 ns 237301760 BM_StringAssignStr_Small_Transparent 2.69 ns 2.69 ns 265809920 BM_StringAssignStr_Large_Opaque 19.6 ns 19.6 ns 35573760 BM_StringAssignStr_Large_Transparent 19.1 ns 19.1 ns 36716544 BM_StringAssignStr_Huge_Opaque 1901 ns 1901 ns 364544 BM_StringAssignStr_Huge_Transparent 1889 ns 1889 ns 360448 ``` Unstable ``` -------------------------------------------------------------------------------- Benchmark Time CPU Iterations -------------------------------------------------------------------------------- BM_StringAssignStr_Empty_Opaque 1.29 ns 1.29 ns 540454912 BM_StringAssignStr_Empty_Transparent 1.11 ns 1.12 ns 628482048 BM_StringAssignStr_Small_Opaque 1.29 ns 1.29 ns 541216768 BM_StringAssignStr_Small_Transparent 1.11 ns 1.11 ns 629469184 BM_StringAssignStr_Large_Opaque 15.6 ns 15.6 ns 44945408 BM_StringAssignStr_Large_Transparent 14.9 ns 14.9 ns 46764032 BM_StringAssignStr_Huge_Opaque 1713 ns 1713 ns 401408 BM_StringAssignStr_Huge_Transparent 1704 ns 1704 ns 397312 ``` Subscribers: libcxx-commits Tags: #libc Differential Revision: https://reviews.llvm.org/D75211 |
||
---|---|---|
.. | ||
benchmarks | ||
cmake | ||
docs | ||
fuzzing | ||
include | ||
lib | ||
src | ||
test | ||
utils | ||
www | ||
.clang-format | ||
.gitignore | ||
appveyor-reqs-install.cmd | ||
appveyor.yml | ||
CMakeLists.txt | ||
CREDITS.TXT | ||
LICENSE.TXT | ||
NOTES.TXT | ||
TODO.TXT |