Improve HtmlTokenizer.AtToken performance. (dotnet/aspnetcore-tooling#1880)
Our razor typing test measured 153 CPU ms in this method. Optimized by fewer calls to CurrentCharacter, not checking '<' twice, and uswing a switch stmt.\n\nCommit migrated from c601c2f11e
This commit is contained in:
parent
f701a188c2
commit
d1e7d8e466
|
|
@ -253,21 +253,27 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
return EndToken(SyntaxKind.NewLine);
|
||||
}
|
||||
|
||||
private bool AtToken()
|
||||
private bool AtToken()
|
||||
{
|
||||
return CurrentCharacter == '<' ||
|
||||
CurrentCharacter == '<' ||
|
||||
CurrentCharacter == '!' ||
|
||||
CurrentCharacter == '/' ||
|
||||
CurrentCharacter == '?' ||
|
||||
CurrentCharacter == '[' ||
|
||||
CurrentCharacter == '>' ||
|
||||
CurrentCharacter == ']' ||
|
||||
CurrentCharacter == '=' ||
|
||||
CurrentCharacter == '"' ||
|
||||
CurrentCharacter == '\'' ||
|
||||
CurrentCharacter == '@' ||
|
||||
(CurrentCharacter == '-' && Peek() == '-');
|
||||
switch (CurrentCharacter)
|
||||
{
|
||||
case '<':
|
||||
case '!':
|
||||
case '/':
|
||||
case '?':
|
||||
case '[':
|
||||
case '>':
|
||||
case ']':
|
||||
case '=':
|
||||
case '"':
|
||||
case '\'':
|
||||
case '@':
|
||||
return true;
|
||||
case '-':
|
||||
return Peek() == '-';
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private StateResult Transition(HtmlTokenizerState state)
|
||||
|
|
|
|||
Loading…
Reference in New Issue