summaryrefslogtreecommitdiffstats
path: root/src/corelib
diff options
context:
space:
mode:
authorMitch Curtis <mitch.curtis@qt.io>2020-06-22 10:04:04 +0200
committerMitch Curtis <mitch.curtis@qt.io>2020-07-31 16:54:23 +0200
commit13c90a0a752c6f67a4fb4078f190505b0c2c46d7 (patch)
treecbdb22ba536722e3c5440ffe08812b0b2167d08b /src/corelib
parent46ec92dad0f71c8d5e3260a67321d82054ea607e (diff)
Document that keys() and values() run in linear time
keys() and values() can be slower for large containers. I ran into this recently when profiling, and was surprised that keys() had to build the list of keys (by appending in a loop). Pick-to: 5.15 5.12 Change-Id: I73215f5a917790236704ad7ef78cefc4a049cd89 Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/corelib')
-rw-r--r--src/corelib/tools/qhash.cpp16
-rw-r--r--src/corelib/tools/qmap.cpp8
-rw-r--r--src/corelib/tools/qset.qdoc4
3 files changed, 28 insertions, 0 deletions
diff --git a/src/corelib/tools/qhash.cpp b/src/corelib/tools/qhash.cpp
index 0f46e7f113..ff2ae6813c 100644
--- a/src/corelib/tools/qhash.cpp
+++ b/src/corelib/tools/qhash.cpp
@@ -1431,6 +1431,10 @@ size_t qHash(long double key, size_t seed) noexcept
The order is guaranteed to be the same as that used by values().
+ This function creates a new list, in \l {linear time}. The time and memory
+ use that entails can be avoided by iterating from \l keyBegin() to
+ \l keyEnd().
+
\sa values(), key()
*/
@@ -1453,6 +1457,10 @@ size_t qHash(long double key, size_t seed) noexcept
The order is guaranteed to be the same as that used by keys().
+ This function creates a new list, in \l {linear time}. The time and memory
+ use that entails can be avoided by iterating from \l keyValueBegin() to
+ \l keyValueEnd().
+
\sa keys(), value()
*/
@@ -2518,6 +2526,10 @@ size_t qHash(long double key, size_t seed) noexcept
The order is guaranteed to be the same as that used by values().
+ This function creates a new list, in \l {linear time}. The time and memory
+ use that entails can be avoided by iterating from \l keyBegin() to
+ \l keyEnd().
+
\sa values(), key()
*/
@@ -2530,6 +2542,10 @@ size_t qHash(long double key, size_t seed) noexcept
The order is guaranteed to be the same as that used by keys().
+ This function creates a new list, in \l {linear time}. The time and memory
+ use that entails can be avoided by iterating from \l keyValueBegin() to
+ \l keyValueEnd().
+
\sa keys(), value()
*/
diff --git a/src/corelib/tools/qmap.cpp b/src/corelib/tools/qmap.cpp
index fd2136c8ef..279dacda0b 100644
--- a/src/corelib/tools/qmap.cpp
+++ b/src/corelib/tools/qmap.cpp
@@ -759,6 +759,10 @@ void QMapDataBase::freeData(QMapDataBase *d)
The order is guaranteed to be the same as that used by values().
+ This function creates a new list, in \l {linear time}. The time and memory
+ use that entails can be avoided by iterating from \l keyBegin() to
+ \l keyEnd().
+
\sa QMultiMap::uniqueKeys(), values(), key()
*/
@@ -798,6 +802,10 @@ void QMapDataBase::freeData(QMapDataBase *d)
all of its values will be in the list, and not just the most
recently inserted one.
+ This function creates a new list, in \l {linear time}. The time and memory
+ use that entails can be avoided by iterating from \l keyValueBegin() to
+ \l keyValueEnd().
+
\sa keys(), value()
*/
diff --git a/src/corelib/tools/qset.qdoc b/src/corelib/tools/qset.qdoc
index eb6b542181..b6aae2c7ca 100644
--- a/src/corelib/tools/qset.qdoc
+++ b/src/corelib/tools/qset.qdoc
@@ -1093,6 +1093,10 @@
\include containers-range-constructor.qdocinc
+ This function creates a new list, in \l {linear time}. The time and memory
+ use that entails can be avoided by iterating from \l constBegin() to
+ \l constEnd().
+
\sa fromList(), QList::fromSet()
*/