diff options
author | Raymond Hettinger <python@rcn.com> | 2004-01-04 11:00:08 (GMT) |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2004-01-04 11:00:08 (GMT) |
commit | b86269db458f63b95be8017e47671092be3b48d1 (patch) | |
tree | 7d923c10b04385faf611a9df19be81f504a3e5d9 /Python/bltinmodule.c | |
parent | 4618cc09ec6b155c1570be07c7da37327f6e2293 (diff) | |
download | cpython-b86269db458f63b95be8017e47671092be3b48d1.zip cpython-b86269db458f63b95be8017e47671092be3b48d1.tar.gz cpython-b86269db458f63b95be8017e47671092be3b48d1.tar.bz2 |
Apply pre-sizing optimization to a broader class of objects.
Formerly, the length was only fetched from sequence objects.
Now, any object that reports its length can benefit from pre-sizing.
Diffstat (limited to 'Python/bltinmodule.c')
-rw-r--r-- | Python/bltinmodule.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c index 7fc6f57..a17c6d9 100644 --- a/Python/bltinmodule.c +++ b/Python/bltinmodule.c @@ -153,15 +153,11 @@ builtin_filter(PyObject *self, PyObject *args) return NULL; /* Guess a result list size. */ - len = -1; /* unknown */ - if (PySequence_Check(seq) && - seq->ob_type->tp_as_sequence->sq_length) { - len = PySequence_Size(seq); - if (len < 0) - PyErr_Clear(); + len = PyObject_Size(seq); + if (len < 0) { + PyErr_Clear(); + len = 8; /* arbitrary */ } - if (len < 0) - len = 8; /* arbitrary */ /* Pre-allocate argument list tuple. */ arg = PyTuple_New(1); |