os/ossrv/genericopenlibs/cppstdlib/stl/test/eh/bug.cpp
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
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
}