Bert Huijben wrote:
> Ivan Zhakov wrote:
>>> Author: stefan2
>>> URL: http://svn.apache.org/r1483532
>>> Log:
>>> We frequently use property name constants in conjunction with hash
>>> containers. Provide new wrappers around apr_hash_get and apr_hash_set
>>> that accept such string constants and statically determine their size.
>>> That minimizes the hash access costs.
>>> 
>>> Mass change hash get and set calls for SVN_PROP_* constants.
>> 
>> Is the performance gain costs code complexity? Please understand my
>> correctly: it's great improve Subversion speed. I just don't like 
>> the idea getting code more complicated to win just several cycles.
> 
> I can see this change making some difference when used in a tight loop in 
> fsfs, 
> but in almost every case updated here it is a single call per 'svn' (or 
> other tool) invocation and I don't think the added complexity and the risk 
> of accidentally applying it to a pointer in the future makes sense here. The 
> cost of a strlen on a string of a few characters certainly isn't that high.
> 
> The IO overhead is so much larger that global changes like this in the higher 
> layers don't make any sense to me.

A safer and simpler design to achieve the same goal as this could be:

#define svn_hash_gets(ht, key) \
  svn__internal_hash_get(ht, key, strlen(key))

which works because the compiler can then optimize out the "strlen" when it is 
safe and possible to do so.

- Julian

Reply via email to