On Nov 17, 2007, at 6:47 PM, Neil Booth wrote: > Steve Naroff wrote:- > >> I'd like to emphasize something (my own form of over analysis:-)... >> >> Unlike gcc, clang is being developed as a set of reusable components >> (with the goal of supporting a diverse set of needs). From my >> perspective, striking the right balance between abstraction and >> performance is an "art". It's hard to do, and hasn't been a part of >> the C compiler development culture over the years (making it >> difficult >> to find people that respect/understand this idiom). > > I think you're absolutely right; the library / interface idiom is > the right approach and will have huge payoff in many directions. I > prefer the architecture of clang to my own front end for this reason, > and am attempting to reorganize it in a similar direction. >
Interesting (and good to hear). > I agree with Chris and doubt the abstraction costs much either; I'd > be surprised if it exceeded 10% or so. I think NetBSD is a good > example > (in C) of how abstracted code can be cleaner and just as efficient. > I also agree with Chris - I certainly wasn't trying to say the abstraction penalty is our problem. My only point was it's always going to be hard to do an "apple to apple" comparison. I brought up "Tiny C" as a way to dramatize my point. I think Chris said it best when he characterized the data as a "good indicator" (of performance). > I have no idea why clang is slower than cfe; the gap surprised me too. > I'm not doing anything magic; it's just straight-forward C code like > APFloat would look like if you removed the class syntactic sugar. I > build a fairly complete internal representation; there's no corner > being cut. > For "header rich" projects (like those @ Apple), we spend most of our time preprocessing and malloc'ing (building the AST's). The breakdown is roughly, 60/30/10 (preprocessor, AST building/ semantic analysis, parsing). I am not familiar with LibTomMath - I would guess it isn't header rich. If your cfe has a "-E" switch, it might be interesting to see how it compares with clang. If there isn't a big difference in preprocessor performance, we know it is likely to be in the AST building and semantic analysis. Curious, snaroff > Neil. _______________________________________________ cfe-dev mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
