Author pitrou
Recipients pitrou, rhettinger
Date 2008-11-16.20:37:09
SpamBayes Score 2.25856e-07
Marked as misclassified No
Message-id <1226867823.10228.44.camel@localhost>
In-reply-to <>

> You may get better timings if you more the types-are-equal test inside
> the types-i-know test.

I get no discernable difference.

> In general, I'm not too keen on adding this kind of dispatch code to
> ceval.c.  It saves the time spent in PyObject_RichCompare() trying to
> figure out where to delegate the work.

Some minimal type testing is necessary if we want to implement the
identity-implies-equality optimization for some types without breaking
the fact that e.g. NaN != NaN. This optimization is important when
dealing with e.g. interned strings. There could be a special flag in the
type structure signaling that the optimization is safe.

I'm attaching a patch which reduces the additional dispatch to a
minimum. The speedup on pybench is smaller, but there is no significant
slowdown for "other" comparisons.

Test                             minimum run-time        average  run-time
                                 this    other   diff    this    other   diff
                 CompareFloats:   176ms   173ms   +1.9%   180ms   175ms   +3.2%
         CompareFloatsIntegers:   237ms   234ms   +1.0%   251ms   240ms   +4.6%
               CompareIntegers:   266ms   276ms   -3.6%   266ms   278ms   -4.3%
        CompareInternedStrings:   160ms   261ms  -38.6%   161ms   261ms  -38.4%
                  CompareLongs:   156ms   166ms   -6.1%   156ms   167ms   -7.1%
                CompareStrings:   167ms   172ms   -2.9%   170ms   173ms   -1.9%
Totals:                          1161ms  1281ms   -9.4%  1184ms  1295ms   -8.6%
File name Uploaded
cmps4.patch pitrou, 2008-11-16.20:37:07
Date User Action Args
2008-11-16 20:37:12pitrousetrecipients: + pitrou, rhettinger
2008-11-16 20:37:10pitroulinkissue3106 messages
2008-11-16 20:37:09pitroucreate