On Mar 30, 2010, at 1:22 PM, Chris Lattner wrote:

> 
> On Mar 30, 2010, at 11:56 AM, Douglas Gregor wrote:
> 
>> Author: dgregor
>> Date: Tue Mar 30 13:56:13 2010
>> New Revision: 99912
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=99912&view=rev
>> Log:
>> Introduce new AST statistics that keep track of the number of isa (or
>> dyn_cast) invocations for C++ and Objective-C types, declarations,
>> expressions, and statements. The statistics will be printed when
>> -print-stats is provided to Clang -cc1, with results such as:
>> 
>> 277073 clang - Number of checks for C++ declaration nodes
>> 13311 clang - Number of checks for C++ expression nodes
>>   18 clang - Number of checks for C++ statement nodes
>> 174182 clang - Number of checks for C++ type nodes
>> 92300 clang - Number of checks for Objective-C declaration nodes
>> 9800 clang - Number of checks for Objective-C expression nodes
>>    7 clang - Number of checks for Objective-C statement nodes
>> 65733 clang - Number of checks for Objective-C type nodes
>> 
>> The statistics are only gathered when NDEBUG is not defined, since
>> they introduce potentially-expensive operations into very low-level
>> routines (isa).
> 
> Interesting, are these checks (without the instrumentation) expensive and 
> worth optimizing?  What do these metrics tell us?

Not as much as I'd hoped. Turning all of these checks into a constant "false" 
(in effect, partly specializing Clang for C code) only yielded a 2.8% 
performance improvement in -fsyntax-only on some sample C code, so these checks 
aren't all that expensive.

> Instead of NDEBUG, how about only enabling it with expensive checks?


As I understand it, expensive checks is for the *really* expensive checks, like 
iterator validity via the C++ standard library's debug mode. I don't think 
we're in that league, but if you're worried about the cost of incrementing a 
counter per C++/ObjC isa<> in a debug build I can look into it. 

        - Doug
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to