[Python-Dev] RE: [Python-checkins] CVS: python/dist/src/Objects unicodeobject.c,2.33,2.34

M.-A. Lemburg mal@lemburg.com
Thu, 06 Jul 2000 11:48:56 +0200


Bill Tutt wrote:
> 
> !       if (c1 > (1<<11) * 26)
> !           c1 += utf16Fixup[c1>>11];
> !       if (c2 > (1<<11) * 26)
> !             c2 += utf16Fixup[c2>>11];
> !
> 
> 
> 
> This change from the patch is kind of silly. You've made the code flow more
> complicated for no particularly good reason,

The reason was that it avoids the fixup lookup for all non-surrogate
characters -- the vast majority of all chars processed.

> esp. considering the size of
> utf16Fixup[]. That is, the cost in the CPU of handling the branch prediction
> is likely to be much higher than the array lookup for every character.

Note that the lookup also involves a shift operation for every
character.

But if you insist, I'll do some benchmarking and check which 
version is faster.

-- 
Marc-Andre Lemburg
______________________________________________________________________
Business:                                      http://www.lemburg.com/
Python Pages:                           http://www.lemburg.com/python/