[cfe-commits] r54794 - in /cfe/trunk: include/clang/Lex/Token.h include/clang/Parse/Parser.h lib/Lex/Lexer.cpp lib/Parse/Parser.cpp lib/Sema/Sema.cpp lib/Sema/Sema.h lib/Sema/SemaExpr.cpp lib/Sema/SemaExprObjC.cpp
clattner at apple.com
Sat Aug 23 17:46:56 PDT 2008
On Aug 23, 2008, at 5:31 PM, Daniel Dunbar wrote:
>> Maybe these should be moved into a new object owned by ASTContext.
>> The nice thing about doing this is that we could actually fix some
>> efficiency issues as well. At startup time, various subsystems (e.g.
>> Sema) look up a bunch of interned strings for future comparisons.
>> However, if they are never used, this lookup is wasted, and it could
>> cause an extra string to be interned. When clang is used as a
>> library, this can be a significant startup time hit.
> I agree that they should probably move somewhere else, but I'm not
> sure the overhead of the interned strings is so much as to be worth
> complicating the code much. And lazily initializing them adds code
> overhead of its own.
> If this was an issue we could also modify IdentifierTable to
> quickly intern
> some set of strings on startup, don't you think? Since many
> will likely end up interning most of the strings this would probably
> be an
> overall win for startup time (although again, I think this is a very
Yeah, good point, nevermind :) One thing that Neil has pointed out is
that the startup time of clang is significantly more than it really
should be. We've made progress on this, but I don't have a really
have a good handle on where the startup time is going now and how to
> - Daniel
> ----- Original Message ----
> From: Chris Lattner <clattner at apple.com>
> To: Daniel Dunbar <daniel at zuster.org>
> Cc: cfe-commits at cs.uiuc.edu
> Sent: Saturday, August 23, 2008 5:00:31 PM
> Subject: Re: [cfe-commits] r54794 - in /cfe/trunk: include/clang/Lex/
> Token.h include/clang/Parse/Parser.h lib/Lex/Lexer.cpp lib/Parse/
> Parser.cpp lib/Sema/Sema.cpp lib/Sema/Sema.h lib/Sema/SemaExpr.cpp
> On Aug 14, 2008, at 3:04 PM, Daniel Dunbar wrote:
>> Author: ddunbar
>> Date: Thu Aug 14 17:04:54 2008
>> New Revision: 54794
>> URL: http://llvm.org/viewvc/llvm-project?rev=54794&view=rev
>> Change Parser & Sema to use interned "super" for comparions.
>> - Added as private members for each because it is not clear where to
>> put the common definition. Perhaps the IdentifierInfos all of these
>> "pseudo-keywords" should be collected into one place (this would
>> KnownFunctionIDs and Objective-C property IDs, for example)
> Nice change!
> Maybe these should be moved into a new object owned by ASTContext.
> The nice thing about doing this is that we could actually fix some
> efficiency issues as well. At startup time, various subsystems (e.g.
> Sema) look up a bunch of interned strings for future comparisons.
> However, if they are never used, this lookup is wasted, and it could
> cause an extra string to be interned. When clang is used as a
> library, this can be a significant startup time hit.
> I admit that this is mostly an issue for the preprocessor, and is
> basically unavoidable there (it had to add all the predefined macros
> to the identifier table and macro tables), but it would be nice to not
> abuse IdentifierTable any more than we have to.
More information about the cfe-commits