• Tim Peters's avatar
    Intern 1-character strings as soon as they're created. As-is, they aren't · c65f3fa4
    Tim Peters authored
    interned when created, so the cached versions generally aren't ever
    interned.  With the patch, the
    		Py_INCREF(t);
    		*p = t;
    		Py_DECREF(s);
    		return;
    indirection block in PyString_InternInPlace() is never executed during a
    full run of the test suite, but was executed very many times before.  So
    I'm trading more work when creating one-character strings for doing less
    work later.  Note that the "more work" here can happen at most 256 times
    per program run, so it's trivial.  The same reasoning accounts for the
    patch's simplification of string_item (the new version can call
    PyString_FromStringAndSize() no more than 256 times per run, so there's
    no point to inlining that stuff -- if we were serious about saving time
    here, we'd pre-initialize the characters vector so that no runtime testing
    at all was needed!).
    c65f3fa4
stringobject.c 75.9 KB