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);
|
return EndToken(SyntaxKind.NewLine);
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool AtToken()
|
private bool AtToken()
|
||||||
{
|
{
|
||||||
return CurrentCharacter == '<' ||
|
switch (CurrentCharacter)
|
||||||
CurrentCharacter == '<' ||
|
{
|
||||||
CurrentCharacter == '!' ||
|
case '<':
|
||||||
CurrentCharacter == '/' ||
|
case '!':
|
||||||
CurrentCharacter == '?' ||
|
case '/':
|
||||||
CurrentCharacter == '[' ||
|
case '?':
|
||||||
CurrentCharacter == '>' ||
|
case '[':
|
||||||
CurrentCharacter == ']' ||
|
case '>':
|
||||||
CurrentCharacter == '=' ||
|
case ']':
|
||||||
CurrentCharacter == '"' ||
|
case '=':
|
||||||
CurrentCharacter == '\'' ||
|
case '"':
|
||||||
CurrentCharacter == '@' ||
|
case '\'':
|
||||||
(CurrentCharacter == '-' && Peek() == '-');
|
case '@':
|
||||||
|
return true;
|
||||||
|
case '-':
|
||||||
|
return Peek() == '-';
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private StateResult Transition(HtmlTokenizerState state)
|
private StateResult Transition(HtmlTokenizerState state)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue