[Development] HEADS UP: Don't use QList, use Q_DECLARE_TYPEINFO
Smith Martin
Martin.Smith at theqtcompany.com
Fri Jul 10 13:21:17 CEST 2015
Yes, thanks for your blog, but I'm one of those responsible for Qt documentation. Currently, the Qt documentation for QList shows this:
"For most purposes, QList is the right class to use. Its index-based API is more convenient than QLinkedList's iterator-based API, and it is usually faster than QVector because of the way it stores its items in memory. It also expands to less code in your executable."
Reading that, most users will use QList all the time.
But I'm still not clear on one point. If I use QList<C>, and it is implemented as QList<C*> because my C is not a "good" C, why is this inefficent if the only copy of each C is the one that gets allocated on the heap? I just create the list to store things. It won't ever be moved. I will just process the list when it's time comes.
Why is that inefficient?
martin
________________________________________
From: development-bounces+martin.smith=theqtcompany.com at qt-project.org <development-bounces+martin.smith=theqtcompany.com at qt-project.org> on behalf of Marc Mutz <marc.mutz at kdab.com>
Sent: Friday, July 10, 2015 2:17 PM
To: development at qt-project.org
Subject: Re: [Development] HEADS UP: Don't use QList, use Q_DECLARE_TYPEINFO
On Friday 10 July 2015 12:20:55 Smith Martin wrote:
> I'm asking if QList<C> becomes QList<C*> even if I declare it as QList<C>.
And I said in the initial mail:
On Friday 10 July 2015 11:03:49 Marc Mutz wrote:
> I won't give you the whole story (google "QList harmful" for that)
Which you clearly haven't done. Otherwise you'd have found the first hit
https://marcmutz.wordpress.com/2010/07/29/sneak-preview-qlist-considered-
harmful/ whose second sentence reads:
The problem boils down to the fact that for a lot of types T, QList<T> is
needlessly inefficient by allocating elements on the heap and storing
pointers to them instead of storing the elements in-place, like e.g. QVector
does.
But yes, Peppe already provided the TL;DR: *grmbl*
He's the nicer of the two of us :)
--
Marc Mutz <marc.mutz at kdab.com> | Senior Software Engineer
KDAB (Deutschland) GmbH & Co.KG, a KDAB Group Company
Tel: +49-30-521325470
KDAB - The Qt Experts
_______________________________________________
Development mailing list
Development at qt-project.org
http://lists.qt-project.org/mailman/listinfo/development
More information about the Development
mailing list