[Interest] Qtcontainerbench std::vector vs QVector
Constantin Makshin
cmakshin at gmail.com
Fri Jul 24 08:57:19 CEST 2015
Well, after looking at the code I can say that the was you wrote this
benchmark "abuses" the QVector's copy-on-write semantic, making it
somewhat biased towards std::vector — you use only non-const versions of
QVector::begin(), QVector::end() and indexing methods. That leads to a
lot of [obviously non-free] checks for sharing and possible detachment.
A few modifications (see the attachment) made the difference in
read-only access negligible, in some tests QVector gave slightly better
results than std::vector. QVector_fwd_it became more than 2x faster.
The results, supposed to be displayed with a monospace font, are below.
I reordered them to make it easier to compare how two containers behave
in the same conditions.
g++ 4.9.2 on a Debian GNU/Linux desktop with Intel Core i5-3570 3.4 GHz
Test # of it. Original Modified
-------------------------------------------------------------
stdvector_fwd_it 5 0.0908203125 0.08984375
QVector_fwd_it 5 0.185546875 0.0888671875
stdvector_fwd_it 10 0.078125 0.0771484375
QVector_fwd_it 10 0.169921875 0.08203125
stdvector_fwd_it 20 0.06640625 0.0693359375
QVector_fwd_it 20 0.15625 0.0712890625
stdvector_fwd_it 40 0.0634765625 0.064453125
QVector_fwd_it 40 0.169921875 0.0634765625
stdvector_fwd_it 50 0.07421875 0.07421875
QVector_fwd_it 50 0.16015625 0.0771484375
stdvector_fwd_it 80 0.0712890625 0.072265625
QVector_fwd_it 80 0.15234375 0.0791015625
stdvector_fwd_it 100 0.0654296875 0.0654296875
QVector_fwd_it 100 0.1484375 0.0703125
stdvector_fwd_it 1000 0.0537109375 0.0537109375
QVector_fwd_it 1000 0.13671875 0.0537109375
stdvector_fwd_it 10000 0.052734375 0.052734375
QVector_fwd_it 10000 0.13671875 0.052734375
stdvector_fwd_it 100000 0.052734375 0.052734375
QVector_fwd_it 100000 0.13671875 0.052734375
stdvector_fwd_it 1000000 0.921875 0.921875
QVector_fwd_it 1000000 1.453125 0.921875
stdvector_fwd_idx 5 0.08984375 0.0908203125
QVector_fwd_idx 5 0.123046875 0.0888671875
stdvector_fwd_idx 10 0.083984375 0.083984375
QVector_fwd_idx 10 0.111328125 0.0888671875
stdvector_fwd_idx 20 0.0810546875 0.107421875
QVector_fwd_idx 20 0.099609375 0.0830078125
stdvector_fwd_idx 40 0.0927734375 0.0927734375
QVector_fwd_idx 40 0.111328125 0.08203125
stdvector_fwd_idx 50 0.0869140625 0.087890625
QVector_fwd_idx 50 0.103515625 0.0908203125
stdvector_fwd_idx 80 0.0791015625 0.0791015625
QVector_fwd_idx 80 0.0986328125 0.0849609375
stdvector_fwd_idx 100 0.072265625 0.0732421875
QVector_fwd_idx 100 0.0927734375 0.078125
stdvector_fwd_idx 1000 0.056640625 0.056640625
QVector_fwd_idx 1000 0.08203125 0.0595703125
stdvector_fwd_idx 10000 0.0556640625 0.0556640625
QVector_fwd_idx 10000 0.0810546875 0.060546875
stdvector_fwd_idx 100000 0.0546875 0.0546875
QVector_fwd_idx 100000 0.080078125 0.05859375
stdvector_fwd_idx 1000000 0.9375 0.9375
QVector_fwd_idx 1000000 1.03125 0.953125
stdvector_pushback 5 7 6.25
QVector_pushback 5 9 8.25
stdvector_pushback 10 6.625 5.6875
QVector_pushback 10 9.125 8.5
stdvector_pushback 20 6.3125 5.4375
QVector_pushback 20 9.25 8.5
stdvector_pushback 40 6 5.5
QVector_pushback 40 9.5 8.875
stdvector_pushback 50 5.5 5
QVector_pushback 50 9.25 8.375
stdvector_pushback 80 5.75 5.1875
QVector_pushback 80 9.625 8.75
stdvector_pushback 100 5.3125 4.75
QVector_pushback 100 9.25 8.375
stdvector_pushback 1000 4.8125 4.1875
QVector_pushback 1000 8.875 8
stdvector_pushback 10000 5.4375 4.9375
QVector_pushback 10000 9.125 8.75
stdvector_pushback 100000 6.875 6.125
QVector_pushback 100000 10 9.75
stdvector_pushback 1000000 63 58
QVector_pushback 1000000 97 96
-------------------------------------------------------------
On 07/23/2015 08:51 AM, Gunnar Roth wrote:
>
>> Am 23.07.2015 um 07:00 schrieb Constantin Makshin <cmakshin at gmail.com>:
>>
>> "vector" branch is identical to "master“.
> Not anymore ;-)
> Thanks for the information.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: qtcontainerbench.diff
Type: text/x-patch
Size: 3304 bytes
Desc: not available
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20150724/3bf2aef1/attachment.bin>
-------------- next part --------------
Test # of it. Original Modified
-------------------------------------------------------------
stdvector_fwd_it 5 0.0908203125 0.08984375
QVector_fwd_it 5 0.185546875 0.0888671875
stdvector_fwd_it 10 0.078125 0.0771484375
QVector_fwd_it 10 0.169921875 0.08203125
stdvector_fwd_it 20 0.06640625 0.0693359375
QVector_fwd_it 20 0.15625 0.0712890625
stdvector_fwd_it 40 0.0634765625 0.064453125
QVector_fwd_it 40 0.169921875 0.0634765625
stdvector_fwd_it 50 0.07421875 0.07421875
QVector_fwd_it 50 0.16015625 0.0771484375
stdvector_fwd_it 80 0.0712890625 0.072265625
QVector_fwd_it 80 0.15234375 0.0791015625
stdvector_fwd_it 100 0.0654296875 0.0654296875
QVector_fwd_it 100 0.1484375 0.0703125
stdvector_fwd_it 1000 0.0537109375 0.0537109375
QVector_fwd_it 1000 0.13671875 0.0537109375
stdvector_fwd_it 10000 0.052734375 0.052734375
QVector_fwd_it 10000 0.13671875 0.052734375
stdvector_fwd_it 100000 0.052734375 0.052734375
QVector_fwd_it 100000 0.13671875 0.052734375
stdvector_fwd_it 1000000 0.921875 0.921875
QVector_fwd_it 1000000 1.453125 0.921875
stdvector_fwd_idx 5 0.08984375 0.0908203125
QVector_fwd_idx 5 0.123046875 0.0888671875
stdvector_fwd_idx 10 0.083984375 0.083984375
QVector_fwd_idx 10 0.111328125 0.0888671875
stdvector_fwd_idx 20 0.0810546875 0.107421875
QVector_fwd_idx 20 0.099609375 0.0830078125
stdvector_fwd_idx 40 0.0927734375 0.0927734375
QVector_fwd_idx 40 0.111328125 0.08203125
stdvector_fwd_idx 50 0.0869140625 0.087890625
QVector_fwd_idx 50 0.103515625 0.0908203125
stdvector_fwd_idx 80 0.0791015625 0.0791015625
QVector_fwd_idx 80 0.0986328125 0.0849609375
stdvector_fwd_idx 100 0.072265625 0.0732421875
QVector_fwd_idx 100 0.0927734375 0.078125
stdvector_fwd_idx 1000 0.056640625 0.056640625
QVector_fwd_idx 1000 0.08203125 0.0595703125
stdvector_fwd_idx 10000 0.0556640625 0.0556640625
QVector_fwd_idx 10000 0.0810546875 0.060546875
stdvector_fwd_idx 100000 0.0546875 0.0546875
QVector_fwd_idx 100000 0.080078125 0.05859375
stdvector_fwd_idx 1000000 0.9375 0.9375
QVector_fwd_idx 1000000 1.03125 0.953125
stdvector_pushback 5 7 6.25
QVector_pushback 5 9 8.25
stdvector_pushback 10 6.625 5.6875
QVector_pushback 10 9.125 8.5
stdvector_pushback 20 6.3125 5.4375
QVector_pushback 20 9.25 8.5
stdvector_pushback 40 6 5.5
QVector_pushback 40 9.5 8.875
stdvector_pushback 50 5.5 5
QVector_pushback 50 9.25 8.375
stdvector_pushback 80 5.75 5.1875
QVector_pushback 80 9.625 8.75
stdvector_pushback 100 5.3125 4.75
QVector_pushback 100 9.25 8.375
stdvector_pushback 1000 4.8125 4.1875
QVector_pushback 1000 8.875 8
stdvector_pushback 10000 5.4375 4.9375
QVector_pushback 10000 9.125 8.75
stdvector_pushback 100000 6.875 6.125
QVector_pushback 100000 10 9.75
stdvector_pushback 1000000 63 58
QVector_pushback 1000000 97 96
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20150724/3bf2aef1/attachment.sig>
More information about the Interest
mailing list