From ab20aef941588914f50f4d4497a1f3b2fffeb999 Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Tue, 12 Nov 2019 12:12:23 +0300 Subject: [PATCH] test queue with random removal --- test.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/test.cpp b/test.cpp index 3352a304..2e039f2b 100644 --- a/test.cpp +++ b/test.cpp @@ -71,6 +71,34 @@ inline bool operator == (const obj_ver_id & a, const obj_ver_id & b) } int main(int argc, char *argv[]) +{ + // queue with random removal: vector is best :D + // deque: 8.1s + // vector: 6.6s + // list: 9.3s + for (int i = 0; i < 10000; i++) + { + std::list q; + for (int i = 0; i < 20480; i++) + { + for (auto it = q.begin(); it != q.end();) + { + if (rand() < RAND_MAX/2) + { + //q.erase(it); -> for deque and vector + auto p = it++; + q.erase(p); + } + else + it++; + } + q.push_back(rand()); + } + } + return 0; +} + +int main01(int argc, char *argv[]) { // deque: 2.091s // vector: 18.733s