[Python-checkins] cpython: Issue 23744: Minor speed-up for deque.__bool__().

raymond.hettinger python-checkins at python.org
Tue Mar 24 07:24:02 CET 2015


https://hg.python.org/cpython/rev/bb27dff7f83f
changeset:   95147:bb27dff7f83f
user:        Raymond Hettinger <python at rcn.com>
date:        Mon Mar 23 23:23:55 2015 -0700
summary:
  Issue 23744:  Minor speed-up for deque.__bool__().

files:
  Modules/_collectionsmodule.c |  25 +++++++++++++++++++++++-
  1 files changed, 24 insertions(+), 1 deletions(-)


diff --git a/Modules/_collectionsmodule.c b/Modules/_collectionsmodule.c
--- a/Modules/_collectionsmodule.c
+++ b/Modules/_collectionsmodule.c
@@ -1249,6 +1249,12 @@
 PyDoc_STRVAR(sizeof_doc,
 "D.__sizeof__() -- size of D in memory, in bytes");
 
+static int
+deque_bool(dequeobject *deque)
+{
+    return Py_SIZE(deque) != 0;
+}
+
 static PyObject *
 deque_get_maxlen(dequeobject *deque)
 {
@@ -1276,6 +1282,23 @@
     0,                                  /* sq_inplace_repeat */
 };
 
+static PyNumberMethods deque_as_number = {
+    0,                                  /* nb_add */
+    0,                                  /* nb_subtract */
+    0,                                  /* nb_multiply */
+    0,                                  /* nb_remainder */
+    0,                                  /* nb_divmod */
+    0,                                  /* nb_power */
+    0,                                  /* nb_negative */
+    0,                                  /* nb_positive */
+    0,                                  /* nb_absolute */
+    (inquiry)deque_bool,                /* nb_bool */
+    0,                                  /* nb_invert */
+    0,                                  /* nb_lshift */
+    0,                                  /* nb_rshift */
+ };
+
+
 /* deque object ********************************************************/
 
 static PyObject *deque_iter(dequeobject *deque);
@@ -1340,7 +1363,7 @@
     0,                                  /* tp_setattr */
     0,                                  /* tp_reserved */
     deque_repr,                         /* tp_repr */
-    0,                                  /* tp_as_number */
+    &deque_as_number,                   /* tp_as_number */
     &deque_as_sequence,                 /* tp_as_sequence */
     0,                                  /* tp_as_mapping */
     PyObject_HashNotImplemented,        /* tp_hash */

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list