[cfe-dev] Hitting LexIdentifier with a minor performance hit
Sean Hunt
rideau3 at gmail.com
Tue Dec 8 21:21:55 PST 2009
Chris Lattner wrote:
> On Dec 4, 2009, at 12:40 PM, Sean Hunt wrote:
>
>> Hey,
>>
>> I'd like to split LexIdentifier into two functions so that the actual identifier lexing logic can be reused for user-defined literal suffixes. Since this is a change to the lexing code that will probably have a negative performance impact, however slight (one function call of overhead per identifier is added; one goto is removed per "nasty" identifier (a \, $, or ? is present)), I wanted to check it by first.
>>
>> The effective change is that the literal lexing code will be able to use LexIdentifierInternal to parse the suffix when I add that in.
>
> This is one of the most performance sensitive pieces of the entire compiler. Is there any other way to avoid this (e.g. through code duplication or macros)? Have you measured the performance impact of this change?
>
> -Chris
Output of 'time make test' without patch:
real 0m36.170s
user 0m21.965s
sys 0m10.453s
real 0m24.046s
user 0m22.269s
sys 0m9.789s
real 0m23.655s
user 0m22.085s
sys 0m10.157s
real 0m23.617s
user 0m21.821s
sys 0m10.113s
real 0m24.389s
user 0m22.213s
sys 0m10.029s
with patch:
real 0m26.394s
user 0m22.121s
sys 0m10.365s
real 0m24.502s
user 0m22.161s
sys 0m10.017s
real 0m24.139s
user 0m22.213s
sys 0m10.073s
real 0m23.997s
user 0m22.253s
sys 0m10.085s
real 0m23.894s
user 0m22.057s
sys 0m10.033s
Sean
More information about the cfe-dev
mailing list