Message75943
Hello,
> 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:12 | pitrou | set | recipients:
+ pitrou, rhettinger |
2008-11-16 20:37:10 | pitrou | link | issue3106 messages |
2008-11-16 20:37:09 | pitrou | create | |
|