mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-11 16:32:14 -06:00
cmGeneratorExpressionLexer: only tokenize strings with a '$'
In standard libraries, `std::string::find` is usually implemented using vectorized code. Since the Tokenize method iterates character-by-character, doing an initial check using `find` improves performance.
This commit is contained in:
@@ -21,6 +21,12 @@ std::vector<cmGeneratorExpressionToken> cmGeneratorExpressionLexer::Tokenize(
|
||||
{
|
||||
std::vector<cmGeneratorExpressionToken> result;
|
||||
|
||||
if (input.find('$') == std::string::npos) {
|
||||
result.push_back(cmGeneratorExpressionToken(
|
||||
cmGeneratorExpressionToken::Text, input.c_str(), input.size()));
|
||||
return result;
|
||||
}
|
||||
|
||||
const char* c = input.c_str();
|
||||
const char* upto = c;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user