From: Louie Lu Date: Fri, 24 Feb 2017 03:59:49 +0000 (+0800) Subject: bpo-29634: Reduce deque repeat execution when maxlen exist and size is not 1 (#255... X-Git-Tag: v3.7.0a1~1292 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=357bad7101df196d7f4ea3dc6ed9a6436afb022c;p=python bpo-29634: Reduce deque repeat execution when maxlen exist and size is not 1 (#255) (#255) --- diff --git a/Modules/_collectionsmodule.c b/Modules/_collectionsmodule.c index 8615bf1d39..44e9e119ae 100644 --- a/Modules/_collectionsmodule.c +++ b/Modules/_collectionsmodule.c @@ -731,6 +731,10 @@ deque_inplace_repeat(dequeobject *deque, Py_ssize_t n) if (seq == NULL) return seq; + /* Reduce the number of repetitions when maxlen would be exceeded */ + if (deque->maxlen >= 0 && n * size > deque->maxlen) + n = (deque->maxlen + size - 1) / size; + for (i = 0 ; i < n-1 ; i++) { rv = deque_extend(deque, seq); if (rv == NULL) {