#include #include using namespace Upp; CONSOLE_APP_MAIN { const int N = 2000; Vector data; Buffer sdata(N); for(int i = 0; i < N; i++) { data << AsString(i); sdata[i] = data[i].ToStd(); } RDUMP(sizeof(std::string)); RDUMP(sizeof(String)); for(int q = 1000; q--;) { { RTIMING("vector::push_back"); std::vector v; for(int i = 0; i < N; i++) v.push_back(sdata[i]); } { RTIMING("vector::push_back"); std::vector v; for(int i = 0; i < N; i++) v.push_back(data[i]); } { RTIMING("Vector::Add"); Vector v; for(int i = 0; i < N; i++) v.Add(data[i]); } { RTIMING("vector::insert"); std::vector v; for(int i = 0; i < N; i++) v.insert(v.begin(), sdata[i]); } { RTIMING("vector::insert"); std::vector v; for(int i = 0; i < N; i++) v.insert(v.begin(), sdata[i]); } { RTIMING("Vector::Insert"); Vector v; for(int i = 0; i < N; i++) v.Insert(0, data[i]); } { std::vector v; for(int i = 0; i < N; i++) v.insert(v.begin(), sdata[i]); RTIMING("vector::erase"); while(v.size()) v.erase(v.begin()); } { std::vector v(~sdata, ~sdata + N); RTIMING("vector::erase"); while(v.size()) v.erase(v.begin()); } { Vector v; for(int i = 0; i < N; i++) v.Insert(0, data[i]); RTIMING("Vector::Remove"); while(v.GetCount()) v.Remove(0); } for(int j = 0; j < 100; j++) { { std::vector v(~sdata, ~sdata + N); RTIMING("std::remove_if"); v.erase(std::remove_if(v.begin(), v.end(), [](const std::string& h) { return h[0] == '1'; }), v.end()); } { Vector v = clone(data); RTIMING("Vector::RemoveIf"); v.RemoveIf([&](int i) { return v[i][0] == '1'; }); } } } }