author | sl |
Tue, 10 Jun 2014 14:32:02 +0200 | |
changeset 1 | 260cb5ec6c19 |
permissions | -rw-r--r-- |
sl@0 | 1 |
#include <set> |
sl@0 | 2 |
#include <vector> |
sl@0 | 3 |
#include <iostream> |
sl@0 | 4 |
#include <boost/timer.hpp> |
sl@0 | 5 |
#include <boost/lexical_cast.hpp> |
sl@0 | 6 |
|
sl@0 | 7 |
struct compare |
sl@0 | 8 |
{ |
sl@0 | 9 |
bool operator()(int* x, int* y) |
sl@0 | 10 |
{ return *x < *y; } |
sl@0 | 11 |
|
sl@0 | 12 |
}; |
sl@0 | 13 |
|
sl@0 | 14 |
int main(int argc, char const* const argv[]) |
sl@0 | 15 |
{ |
sl@0 | 16 |
std::size_t niters = argc < 2 ? 1000 : boost::lexical_cast<std::size_t>(argv[1]); |
sl@0 | 17 |
|
sl@0 | 18 |
boost::timer t; |
sl@0 | 19 |
|
sl@0 | 20 |
std::vector<int> v; |
sl@0 | 21 |
for (int n = 0; n < niters; ++n) |
sl@0 | 22 |
{ |
sl@0 | 23 |
v.insert(v.begin() + v.size()/2, n); |
sl@0 | 24 |
} |
sl@0 | 25 |
|
sl@0 | 26 |
std::cout << "vector fill: " << t.elapsed() << std::endl; |
sl@0 | 27 |
|
sl@0 | 28 |
std::multiset<int*,compare> m; |
sl@0 | 29 |
for (int n = 0; n < niters; ++n) |
sl@0 | 30 |
{ |
sl@0 | 31 |
m.insert(&v[n]); |
sl@0 | 32 |
} |
sl@0 | 33 |
std::cout << "map fill 1: " << t.elapsed() << std::endl; |
sl@0 | 34 |
for (int n = 0; n < niters; ++n) |
sl@0 | 35 |
{ |
sl@0 | 36 |
m.insert(&v[n]); |
sl@0 | 37 |
} |
sl@0 | 38 |
std::cout << "map fill 2: " << t.elapsed() << std::endl; |
sl@0 | 39 |
} |