[PUSHED 3-6] Fix for fdo#53929 - Case insensitive strings in pivot table

Kohei Yoshida kohei.yoshida at gmail.com
Thu Aug 23 05:09:12 PDT 2012


Hi Michael,

On 08/23/2012 04:13 AM, Michael Meeks wrote:

> set; surely it's smaller and easier to just do the pointer compare:
>
> 	if (mpString == r.mpString)
>
> 	is just as good presumably ?

Yes.  That's probably better and short-and-sweet since it avoids one 
equality comparison and still just as effective.  Good point.

except - with some more thinking:
>
> 	Also, I wonder how often the data-pilot code will do this ?

A LOT.  String equality check was the single biggest performance 
bottleneck for years, with many documents thrown at me.  This change, 
along with the string interning, brought back pivot cache refresh time 
down from 23 seconds to 4 second with the test document I used at the time.

  presumably
> if we build a hash-table of strings we know are not equal (I guess the
> DP has bucketing code for this already), it'd be far faster to look both
> strings up in that bucket, detect they are not the same and then
> exit ;-) [ assuming the bucket is constructed case-insensitively ].

Well, the bucket is constructed case-sensitively for now.  I might try 
the case-insensitive hash table approach, which indeed sounds like a 
better idea, unless there are some gotchas lurking in there...

Kohei

-- 
Kohei Yoshida, LibreOffice hacker, Calc


More information about the LibreOffice mailing list