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).
diff --git a/Python/ceval.c b/Python/ceval.c
index b707734..34b4cb9 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -1778,6 +1778,21 @@
 				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);