Kaydet (Commit) c52d713b authored tarafından Marc-André Lemburg's avatar Marc-André Lemburg

Add fast-path for comparing interned (true) string objects.

This patch boosts performance for comparing identical string object
by some 20% on my machine while not causing any noticable slow-down
for other operations (according to tests done with pybench).
üst f0b11d28
......@@ -1778,6 +1778,21 @@ eval_frame(PyFrameObject *f)
x = res ? Py_True : Py_False;
Py_INCREF(x);
}
else if (v == w && PyString_CheckExact(v)) {
/* Fast-path for comparing interned strings */
switch (oparg) {
case EQ: x = Py_True; break;
case LE: x = Py_True; break;
case GE: x = Py_True; break;
case NE: x = Py_False; break;
case GT: x = Py_False; break;
case LT: x = Py_False; break;
case IS: x = Py_True; break;
case IS_NOT: x = Py_False; break;
default: goto slow_compare;
}
Py_INCREF(x);
}
else {
slow_compare:
x = cmp_outcome(oparg, v, w);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment