From 4967231a9e5c39de3a60b61db9b6a71266a04829 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 18 Feb 2010 22:18:23 +0100 Subject: optimize queue-like structures a list to which we append after we took something from the beginning is most likely a queue, and it seems unlikely that we would suddenly start prepending to it. consequently, optimizing the prepending case by leaving the first third of the allocation free just increases the number of times the array needs to be shifted down. Reviewed-by: joao --- src/corelib/tools/qlist.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/corelib/tools/qlist.cpp b/src/corelib/tools/qlist.cpp index 1576b40..39c1beb 100644 --- a/src/corelib/tools/qlist.cpp +++ b/src/corelib/tools/qlist.cpp @@ -188,9 +188,9 @@ void **QListData::append() int n = d->end - d->begin; if (d->begin > 2 * d->alloc / 3) { // we have enough space. Just not at the end -> move it. - ::memcpy(d->array + n, d->array + d->begin, n * sizeof(void *)); - d->begin = n; - d->end = n * 2; + ::memcpy(d->array, d->array + d->begin, n * sizeof(void *)); + d->begin = 0; + d->end = n; } else { realloc(grow(d->alloc + 1)); } -- cgit v0.12