QHeaderView::moveSection performance boost
authorThorbjørn Lund Martsum <tmartsum@gmail.com>
Thu, 29 Dec 2011 07:59:37 +0000 (08:59 +0100)
committerQt by Nokia <qt-info@nokia.com>
Wed, 15 Feb 2012 17:17:01 +0000 (18:17 +0100)
commitb800d8b94a7861ecf8853621f6556fca186fb5b7
tree78585f97c187a0bdc178ffe799cbdf50165d3a18
parent656dff47a6f2c5e53c1bb2e54bf21e053c82c32a
QHeaderView::moveSection performance boost

The patch also speeds up swapSections and hideSection a lot.

It work by eliminating the Span. (That is forcing each 'Span'
to have exactly one element) That saves a lot of loops since
we can often lookup info fast - and/or change it fast.

Since it is often a complexity change, it is difficult to
put %-increase on. (The most used linear function is
recalcSectionStartPos() - and it has a very low constant)

However comparing with the new benchmark (2500 rows)
swapSection, showHideSection and moveSection are about
20-40 factors faster. (Yes, it is a lot faster!)

In the benchmark moveSection is about 300 factors faster.

Beside being a far better model it is also far more simple.

This fix partly solves:
Task-number: QTBUG-19092

Change-Id: I8deeb9315276d15c68e8a27d5dcb8e0c0badf367
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
src/widgets/itemviews/qheaderview.cpp
src/widgets/itemviews/qheaderview_p.h