mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	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.
This commit is contained in:
		
							parent
							
								
									0c93ff6709
								
							
						
					
					
						commit
						450277fef5
					
				
					 2 changed files with 4 additions and 13 deletions
				
			
		| 
						 | 
					@ -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.");
 | 
					found, returns S and two empty strings.");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static PyObject *
 | 
					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;
 | 
						Py_ssize_t len = PyString_GET_SIZE(self), sep_len, pos;
 | 
				
			||||||
	const char *str = PyString_AS_STRING(self), *sep;
 | 
						const char *str = PyString_AS_STRING(self), *sep;
 | 
				
			||||||
	PyObject *sep_obj;
 | 
					 | 
				
			||||||
	PyObject * out;
 | 
						PyObject * out;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!PyArg_ParseTuple(args, "O:partition", &sep_obj))
 | 
					 | 
				
			||||||
		return NULL;
 | 
					 | 
				
			||||||
	if (PyString_Check(sep_obj)) {
 | 
						if (PyString_Check(sep_obj)) {
 | 
				
			||||||
		sep = PyString_AS_STRING(sep_obj);
 | 
							sep = PyString_AS_STRING(sep_obj);
 | 
				
			||||||
		sep_len = PyString_GET_SIZE(sep_obj);
 | 
							sep_len = PyString_GET_SIZE(sep_obj);
 | 
				
			||||||
| 
						 | 
					@ -3969,8 +3966,7 @@ string_methods[] = {
 | 
				
			||||||
	{"count", (PyCFunction)string_count, METH_VARARGS, count__doc__},
 | 
						{"count", (PyCFunction)string_count, METH_VARARGS, count__doc__},
 | 
				
			||||||
	{"endswith", (PyCFunction)string_endswith, METH_VARARGS,
 | 
						{"endswith", (PyCFunction)string_endswith, METH_VARARGS,
 | 
				
			||||||
	 endswith__doc__},
 | 
						 endswith__doc__},
 | 
				
			||||||
	{"partition", (PyCFunction)string_partition, METH_VARARGS,
 | 
						{"partition", (PyCFunction)string_partition, METH_O, partition__doc__},
 | 
				
			||||||
	 partition__doc__},
 | 
					 | 
				
			||||||
	{"find", (PyCFunction)string_find, METH_VARARGS, find__doc__},
 | 
						{"find", (PyCFunction)string_find, METH_VARARGS, find__doc__},
 | 
				
			||||||
	{"index", (PyCFunction)string_index, METH_VARARGS, index__doc__},
 | 
						{"index", (PyCFunction)string_index, METH_VARARGS, index__doc__},
 | 
				
			||||||
	{"lstrip", (PyCFunction)string_lstrip, METH_VARARGS, lstrip__doc__},
 | 
						{"lstrip", (PyCFunction)string_lstrip, METH_VARARGS, lstrip__doc__},
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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.");
 | 
					found, returns S and two empty strings.");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static PyObject*
 | 
					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);
 | 
					    return PyUnicode_Partition((PyObject *)self, separator);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6620,7 +6615,7 @@ static PyMethodDef unicode_methods[] = {
 | 
				
			||||||
    {"count", (PyCFunction) unicode_count, METH_VARARGS, count__doc__},
 | 
					    {"count", (PyCFunction) unicode_count, METH_VARARGS, count__doc__},
 | 
				
			||||||
    {"expandtabs", (PyCFunction) unicode_expandtabs, METH_VARARGS, expandtabs__doc__},
 | 
					    {"expandtabs", (PyCFunction) unicode_expandtabs, METH_VARARGS, expandtabs__doc__},
 | 
				
			||||||
    {"find", (PyCFunction) unicode_find, METH_VARARGS, find__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__},
 | 
					    {"index", (PyCFunction) unicode_index, METH_VARARGS, index__doc__},
 | 
				
			||||||
    {"ljust", (PyCFunction) unicode_ljust, METH_VARARGS, ljust__doc__},
 | 
					    {"ljust", (PyCFunction) unicode_ljust, METH_VARARGS, ljust__doc__},
 | 
				
			||||||
    {"lower", (PyCFunction) unicode_lower, METH_NOARGS, lower__doc__},
 | 
					    {"lower", (PyCFunction) unicode_lower, METH_NOARGS, lower__doc__},
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue