qt5base-lts/tests/auto/corelib/tools
Andrei Golubev 8f7016252a Implement QList::emplaceBack as a proper function
My endeavours figuring out why QList::append(elem) gives worst
performance compared to 5.15 ended up into this commit. After some
straightforward fixes, what was left is "everything is uniformly worse"
and takes more CPU cycles

Introduce emplaceBack implementation as append is quite a special case
that could be greatly simplified. This is a "straightforward" part of
the optimizations

While at it, change append(t) to use emplaceBack(t)

For workloads like:
QList<int> list;
forever {
  list.append(0);
}
this gives huge improvement (roughly 30% for 10k+ elements),
movable and complex types also get a tiny speedup

Task-number: QTBUG-87330
Change-Id: I9261084e545c24e5473234220d2a3f2cd26c2b7f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-11-04 11:21:59 +01:00
..
collections Initialize values in collection tests 2020-10-28 22:19:05 +01:00
containerapisymmetry tst_containerapisymmetry: code tidies 2020-10-18 19:55:42 +02:00
qalgorithms Another round of replacing 0 with nullptr 2020-10-07 23:02:47 +02:00
qarraydata Remove the old insert methods in QArrayDataOps 2020-11-04 11:21:54 +01:00
qbitarray CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qcache CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qcommandlineparser CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qcontiguouscache CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qcryptographichash CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qeasingcurve Another round of replacing 0 with nullptr 2020-10-07 23:02:47 +02:00
qexplicitlyshareddatapointer CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qflatmap CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qfreelist CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qhash Make the QMultiHash(const QHash &) constructor explicit 2020-11-03 16:28:14 +01:00
qhashfunctions CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qline Deal with {und,ov}erflow issues in QLine's length handling 2020-09-30 16:26:49 +02:00
qlist Implement QList::emplaceBack as a proper function 2020-11-04 11:21:59 +01:00
qmacautoreleasepool CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qmakearray CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qmap CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qmargins CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qmessageauthenticationcode CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qoffsetstringarray CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qpair CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qpoint CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qpointf CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qqueue CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qrect Improve QRectF::toRect() 2020-10-12 13:00:43 +02:00
qringbuffer CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qscopedpointer CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qscopedvaluerollback CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qscopeguard Replace Q_REQUIRED_RESULT with [[nodiscard]] 2020-09-25 07:10:45 +02:00
qset CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qsharedpointer Another round of replacing 0 with nullptr 2020-10-07 23:02:47 +02:00
qsize CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qsizef CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qstl CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qtaggedpointer CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qtimeline CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qvarlengtharray Make QVarLengthArray comparisons hidden friends 2020-10-30 13:27:14 +01:00
qversionnumber CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
.prev_CMakeLists.txt CMake: Regenerate subdir test projects 2020-07-09 09:38:39 +02:00
CMakeLists.txt Move implementation of QVector/List back to qlist.h 2020-06-20 20:01:33 +02:00
tools.pro Move implementation of QVector/List back to qlist.h 2020-06-20 20:01:33 +02:00