PATCH: private ivars - update for r176116

jahanian fjahanian at apple.com
Wed Feb 27 10:04:57 PST 2013


LLVM IR times look within reasonable range. Also, please make sure what you are
timing has @implementation of classes in them and preferably, with bunch of their 
own private ivars.

- Thanks, Fariborz

On Feb 27, 2013, at 9:57 AM, Adrian Prantl <aprantl at apple.com> wrote:

> Is there a preferred way to report compile-time-performance?
> 
> It seems as if any performance hit introduced by the new patch is within the variance between runs.
> 
> For a large module that includes Cocoa.h, using -O0 -g -ftime-report, I get 
> 
>   ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
>   3.4411 ( 91.4%)   0.0512 ( 64.9%)   3.4923 ( 90.9%)   3.4922 ( 90.8%)  Clang front-end timer
>   0.1774 (  4.7%)   0.0097 ( 12.3%)   0.1871 (  4.9%)   0.1871 (  4.9%)  Code Generation Time
>   0.1461 (  3.9%)   0.0180 ( 22.8%)   0.1641 (  4.3%)   0.1673 (  4.3%)  LLVM IR Generation Time
>   3.7647 (100.0%)   0.0789 (100.0%)   3.8435 (100.0%)   3.8467 (100.0%)  Total
> 
> vs the original
> 
>   ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
>   3.4252 ( 91.5%)   0.0519 ( 65.0%)   3.4771 ( 90.9%)   3.4770 ( 90.8%)  Clang front-end timer
>   0.1770 (  4.7%)   0.0100 ( 12.6%)   0.1870 (  4.9%)   0.1869 (  4.9%)  Code Generation Time
>   0.1427 (  3.8%)   0.0179 ( 22.4%)   0.1606 (  4.2%)   0.1643 (  4.3%)  LLVM IR Generation Time
>   3.7450 (100.0%)   0.0798 (100.0%)   3.8248 (100.0%)   3.8282 (100.0%)  Total
> 
> This is for a Debug+Asserts build.
> 
> For Release I get
>   ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
>   0.3109 ( 88.0%)   0.0329 ( 67.8%)   0.3438 ( 85.6%)   0.3438 ( 85.5%)  Clang front-end timer
>   0.0254 (  7.2%)   0.0057 ( 11.7%)   0.0311 (  7.7%)   0.0311 (  7.7%)  Code Generation Time
>   0.0169 (  4.8%)   0.0099 ( 20.5%)   0.0268 (  6.7%)   0.0275 (  6.8%)  LLVM IR Generation Time
>   0.3532 (100.0%)   0.0486 (100.0%)   0.4017 (100.0%)   0.4023 (100.0%)  Total
> 
> versus the original 
> 
>   ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
>   0.3219 ( 88.2%)   0.0335 ( 67.6%)   0.3554 ( 85.8%)   0.3554 ( 85.6%)  Clang front-end timer
>   0.0259 (  7.1%)   0.0059 ( 11.9%)   0.0318 (  7.7%)   0.0318 (  7.7%)  Code Generation Time
>   0.0170 (  4.7%)   0.0102 ( 20.5%)   0.0272 (  6.6%)   0.0280 (  6.7%)  LLVM IR Generation Time
>   0.3648 (100.0%)   0.0496 (100.0%)   0.4144 (100.0%)   0.4152 (100.0%)  Total
> 
> All are best out of 3 runs.
> 
> On Feb 27, 2013, at 9:07 AM, jahanian <fjahanian at apple.com> wrote:
> 
>> Not commenting on the DebugInfo caching part. But as a general comment, if there was a performance hit, you may want to
>> provide performance numbers before and after this patch, say on Cocoa.h, and sample of other more modern framework
>> files which use if private ivars (and of course while generating debug info).
>> 
>> - Fariborz
>> 
>> On Feb 26, 2013, at 6:08 PM, Adrian Prantl <aprantl at apple.com> wrote:
>> 
>>> Hi CFEers,
>>> 
>>> After re-thinking it, here is an updated version of this patch that does not completely disable caching for incomplete interfaces. This should minimize the performance hit of the previous version.
>>> Basically I am now storing ObjCInterface-Types in a separate cache, together with a “checksum” (really the number of ivars). If we look up the type again, I see if the checksum changed and otherwise just return the type from the cache.
>>> 
>>> -- Adrian
>>> 
>>> <0001-Ensure-that-DIType-is-regenerated-after-we-visited-a.patch>_______________________________________________
>>> cfe-commits mailing list
>>> cfe-commits at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20130227/100325fb/attachment.html>


More information about the cfe-commits mailing list