diff options
author | Milian Wolff <mail@milianw.de> | 2016-01-15 13:55:22 (GMT) |
---|---|---|
committer | Stephen Kelly <steveire@gmail.com> | 2016-01-20 20:20:55 (GMT) |
commit | 70788e92641c4cf4c3f20af607cc6e203203b420 (patch) | |
tree | 0ff1cc4d625217bc392e3be5daf875a7f68c58d0 | |
parent | bd2384f593d0cf2c894ff781c4e5278fff2ac96c (diff) | |
download | CMake-70788e92641c4cf4c3f20af607cc6e203203b420.zip CMake-70788e92641c4cf4c3f20af607cc6e203203b420.tar.gz CMake-70788e92641c4cf4c3f20af607cc6e203203b420.tar.bz2 |
Remove temporary allocations when calling cmHasLiteral{Suf,Pre}fix.
When the first argument passed is a std::string, we need to take it
by const&, otherwise we copy the string and trigger a temporary
allocation. This patch removes a few 10k temporary allocations when
running the CMake daemon on the KDevelop build dir.
This hotspot was found with heaptrack.
-rw-r--r-- | Source/cmAlgorithms.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/Source/cmAlgorithms.h b/Source/cmAlgorithms.h index ef607d2..54617f3 100644 --- a/Source/cmAlgorithms.h +++ b/Source/cmAlgorithms.h @@ -52,13 +52,13 @@ template<typename T, size_t N> size_t cmArraySize(const T (&)[N]) { return N; } template<typename T, size_t N> -bool cmHasLiteralPrefix(T str1, const char (&str2)[N]) +bool cmHasLiteralPrefix(const T& str1, const char (&str2)[N]) { return cmHasLiteralPrefixImpl(str1, str2, N - 1); } template<typename T, size_t N> -bool cmHasLiteralSuffix(T str1, const char (&str2)[N]) +bool cmHasLiteralSuffix(const T& str1, const char (&str2)[N]) { return cmHasLiteralSuffixImpl(str1, str2, N - 1); } |