C++ stl list 踩坑

it2022-05-05  160

C++ stl list 获取size()函数非常慢,跟shi一样,生产环境中使用被坑了,有时间看一下源码,严重怀疑是现算的。

 

#include <iostream> #include <list> #include <stdlib.h> #include <stdio.h> #include <sys/types.h> #include <sys/timeb.h> #include  <memory.h> using namespace std; typedef long long            __int64; typedef __int64                INT64;

static inline INT64 GetSystemTime() {     struct timeb loTimeb;     memset(&loTimeb, 0 , sizeof(timeb));     ftime(&loTimeb);      return ((INT64)loTimeb.time * 1000) + loTimeb.millitm; }

int main() {     INT64 start, end;     start = GetSystemTime();     std::list<int> msglist;     for(int i=0;i<2000000; i++)     {         msglist.push_back(i);     }     end = GetSystemTime();     cout<< " time = "<< end - start<<endl;

    start = GetSystemTime();

    for(int i=0;i<1000;i++)     {         msglist.size();     }     end = GetSystemTime();          cout<< " time = "<< end - start<<endl;

    start = GetSystemTime();

    int id;     while(!msglist.empty())     {         id = msglist.front();         msglist.pop_front();     }     end = GetSystemTime();     cout<< " time = "<< end - start<<endl;

    return 0; }

 

 

[xx@localhost ThreadSafe]$ g++ testList.cpp -o list [xx@localhost ThreadSafe]$  [xx@localhost ThreadSafe]$  [xx@localhost ThreadSafe]$  [xx@localhost ThreadSafe]$ ./list   time = 584  time = 12247  time = 132  


最新回复(0)