测试C ++容器 - insert和push_back的结果

时间:2011-10-29 18:51:09

标签: c++

这4个容器,vector,list,map,unordered_map ...很重要b.c.它们代表了一些最常用的数据结构。在内部,它们表示为动态数组,双链表,可搜索树和散列。

   #include "c_arclib.cpp"
    using namespace std;
    int main()
      {
    /*
    Define - Vector, List, Map, Unordered_map
    */
      vector<int> vector_int;
      list<int> list_int;
      map<int,int> map_int;
      unordered_map<int, int> unordered_map_int; 
    /*
    Define Loop and Time 
    */
      int i,j,loop1=5, loop2=4294967;
      clock_t time_start,time_end,time_diff;
    /*
    Run Timing Test
    */
      for(j=0;j<loop1;j++)
        {
        time_start=clock();
        for(i=0;i<loop2;++i)
          {
          unordered_map_int.insert(pair<int,int>(rand(),rand()));
          /*
          map_int.insert(pair<int,int>(rand(),rand()));
          vector_int.push_back(rand());
          list_int.push_back(rand());
          */
          }
        time_end=clock();
        time_diff=time_end-time_start;
        cout << time_diff << endl;
        }
    /*
    Results
    Push / Insert
    map (insert)                    9500
    unorderd_map (insert)           3300
    list (push)                     2600
    vector (push)                   900
    */

2 个答案:

答案 0 :(得分:2)

我想你可能只想这样做?

cout << (double)(time_end - time_start) / CLOCKS_PER_SEC << endl;

此外,还有比clock()更精确的计时器。

答案 1 :(得分:0)

  

返回的值是到目前为止使用的CPU时间;获取使用的秒数,除以CLOCKS_PER_SEC。

http://linux.die.net/man/3/clock

对于clock()易于使用的C ++界面,请考虑boost::timer