From: Fredrik Lundh Date: Fri, 26 May 2006 09:46:59 +0000 (+0000) Subject: needforspeed: use METH_O for argument handling, which made partition some X-Git-Tag: v2.5b1~497 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=450277fef50c213b14b88c4fe939bd32eeecee36;p=python needforspeed: use METH_O for argument handling, which made partition some ~15% faster for the current tests (which is noticable faster than a corre- sponding find call). thanks to neal-who-never-sleeps for the tip. --- diff --git a/Objects/stringobject.c b/Objects/stringobject.c index 0e0af89e5f..0aa1e5b389 100644 --- a/Objects/stringobject.c +++ b/Objects/stringobject.c @@ -1606,15 +1606,12 @@ the separator itself, and the part after it. If the separator is not\n\ found, returns S and two empty strings."); static PyObject * -string_partition(PyStringObject *self, PyObject *args) +string_partition(PyStringObject *self, PyObject *sep_obj) { Py_ssize_t len = PyString_GET_SIZE(self), sep_len, pos; const char *str = PyString_AS_STRING(self), *sep; - PyObject *sep_obj; PyObject * out; - if (!PyArg_ParseTuple(args, "O:partition", &sep_obj)) - return NULL; if (PyString_Check(sep_obj)) { sep = PyString_AS_STRING(sep_obj); sep_len = PyString_GET_SIZE(sep_obj); @@ -3969,8 +3966,7 @@ string_methods[] = { {"count", (PyCFunction)string_count, METH_VARARGS, count__doc__}, {"endswith", (PyCFunction)string_endswith, METH_VARARGS, endswith__doc__}, - {"partition", (PyCFunction)string_partition, METH_VARARGS, - partition__doc__}, + {"partition", (PyCFunction)string_partition, METH_O, partition__doc__}, {"find", (PyCFunction)string_find, METH_VARARGS, find__doc__}, {"index", (PyCFunction)string_index, METH_VARARGS, index__doc__}, {"lstrip", (PyCFunction)string_lstrip, METH_VARARGS, lstrip__doc__}, diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index 770224884c..82914008e0 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -6357,13 +6357,8 @@ the separator itself, and the part after it. If the separator is not\n\ found, returns S and two empty strings."); static PyObject* -unicode_partition(PyUnicodeObject *self, PyObject *args) +unicode_partition(PyUnicodeObject *self, PyObject *separator) { - PyObject *separator; - - if (!PyArg_ParseTuple(args, "O:partition", &separator)) - return NULL; - return PyUnicode_Partition((PyObject *)self, separator); } @@ -6620,7 +6615,7 @@ static PyMethodDef unicode_methods[] = { {"count", (PyCFunction) unicode_count, METH_VARARGS, count__doc__}, {"expandtabs", (PyCFunction) unicode_expandtabs, METH_VARARGS, expandtabs__doc__}, {"find", (PyCFunction) unicode_find, METH_VARARGS, find__doc__}, - {"partition", (PyCFunction) unicode_partition, METH_VARARGS, partition__doc__}, + {"partition", (PyCFunction) unicode_partition, METH_O, partition__doc__}, {"index", (PyCFunction) unicode_index, METH_VARARGS, index__doc__}, {"ljust", (PyCFunction) unicode_ljust, METH_VARARGS, ljust__doc__}, {"lower", (PyCFunction) unicode_lower, METH_NOARGS, lower__doc__},