Patch: speed up compiler a little bit by optimizing lookup_attribute() and is_attribute_p()

Nicola Pero nicola.pero@meta-innovation.com
Tue Jun 21 13:40:00 GMT 2011


Dimitrious

I didn't realize you were working on this.  Your patch is indeed very similar. :-)

Can I go ahead and rewrite mine following Richard's suggestions (which would make it
even more similar to yours), and add your name to the ChangeLog entry too ?

Thanks

On 21 Jun 2011, at 13:20, Dimitrios Apostolou wrote:

> FWIW I think that most of the speedup is due to inlining lookup_attribute(). I got almost the same by applying only the attached very simple patch, since strlen() was called too often (according to the profile at [1]). I used the always_inline attribute to avoid using a macro.
> 
> I was going to send it together with some other changes I'm trying and after proper measurements. Anyway, better late than ever. Thanks to Christophe Jaillet (CC'd) for pointing it to me.
> 
> 
> Thanks,
> Dimitris
> 
> 
> [1] http://gcc.gnu.org/wiki/OptimisingGCC
> 
> 
> 
> 
> On Tue, 21 Jun 2011, Richard Guenther wrote:
> 
>> On Tue, Jun 21, 2011 at 12:17 PM, Nicola Pero
>> <nicola.pero@meta-innovation.com> wrote:
>>>>> This patch speeds up the C/C++/ObjC/ObjC++ compiler a little bit by optimizing
>>>>> lookup_attribute() and is_attribute_p().  The main change is that these functions
>>>>> are now inline.
>>>> 
>>>> I don't think this is a good idea.
>>> 
>>> Can you explain why ?  You never do in your response :-)
>>> 
>>> I'm guessing it's because you think the inline functions are too big and that's
>>> counter-productive ?
>> 
>> Yes.
>> 
>>>> For this case I'd factor out the NULL attribute list check into an
>>>> inline function and keeping the non-NULL attribute list pieces out-of-line.
>>> 
>>> Ok ... so is this what you'd like - the common, hot case in the inline function,
>>> and the less common, cold case in the out-of-line one ? :-)
>> 
>> Right.
>> 
>>> That makes sense - I'll try that out tonight (it takes a few hours to run all
>>> the benchmarks). ;-)
>> 
>> Thanks.
>> 
>>> 
>>>> Does it work for all languages?  And yes, I agree it would be nice to
>>>> canonicalize to the form without _s even in the attribute lists itself.
>>>> Or go one step further - do not store an identifier but an enum as we
>>>> in fact only ever insert known attributes into the list (which should
>>>> be a VEC instead, possibly even sorted to allow binary search).
>>> 
>>> Sure ... one step at a time. :-)
>> 
>> Of course ;)
>> 
>> Richard.
>> 
>>> Thanks
>>> 
>>> 
> <gcc-lookup_attr.patch>



More information about the Gcc-patches mailing list