aboutsummaryrefslogtreecommitdiffstats
path: root/src/checks/level3/README-reserve-candidates.md
diff options
context:
space:
mode:
Diffstat (limited to 'src/checks/level3/README-reserve-candidates.md')
-rw-r--r--src/checks/level3/README-reserve-candidates.md33
1 files changed, 0 insertions, 33 deletions
diff --git a/src/checks/level3/README-reserve-candidates.md b/src/checks/level3/README-reserve-candidates.md
deleted file mode 100644
index 6a2c6876..00000000
--- a/src/checks/level3/README-reserve-candidates.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# reserve-candidates
-
-
-Finds places that could use a `reserve()` call.
-Whenever you know how many elements a container will hold you should reserve
-space in order to avoid repeated memory allocations.
-
-#### Trivial example missing reserve()
-
- QList<int> ages;
- // list.reserve(people.size());
- for (auto person : people)
- list << person.age();
-
-Example where reserve shouldn't be used:
-
- QLost<int> list;
- for (int i = 0; i < 1000; ++i) {
- // reserve() will be called 1000 times, meaning 1000 allocations
- // whilst without a reserve the internal exponential growth algorithm would do a better job
- list.reserve(list.size() + 2);
- for (int j = 0; j < 2; ++j) {
- list << m;
- }
- }
-
-#### Supported containers
-`QVector`, `std::vector`, `QList`, `QSet` and `QVarLengthArray`
-
-#### Pitfalls
-Rate of false-positives is around 15%. Don't go blindly calling `reserve()` without proper analysis.
-In doubt don't use it, all containers have a growth curve and usually only do log(N) allocations
-when you append N items.