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.p...@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>

Reply via email to