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.
This commit is contained in:
parent
bd2384f593
commit
70788e9264
|
@ -52,13 +52,13 @@ template<typename T, size_t N>
|
||||||
size_t cmArraySize(const T (&)[N]) { return N; }
|
size_t cmArraySize(const T (&)[N]) { return N; }
|
||||||
|
|
||||||
template<typename T, size_t 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);
|
return cmHasLiteralPrefixImpl(str1, str2, N - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T, size_t N>
|
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);
|
return cmHasLiteralSuffixImpl(str1, str2, N - 1);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue