關於vector性能的測試(一)

     最近須要對一個大數據塊進行壓縮傳輸,數據塊大小最大將近20個G,最小也就幾十M,波動範圍比較大。對於大塊數據壓縮後的存放上有點猶豫,對三種不一樣的數據結構進行測試,第一種爲STL中的vector,第二種爲全局緩衝區,第三種爲動態緩衝區。ios

     測試代碼以下:sql

      

  
  
  
  
  1. #include<iostream> 
  2. #include<string> 
  3. #include<vector> 
  4. #include<sys/time.h> 
  5. using namespace std; 
  6. const long  N=1000000000; 
  7. unsigned char bytes_array[N]; 
  8. unsigned char * bytes_array_dynamic; 
  9. struct timeval start,end; 
  10. void startTimer() 
  11.     gettimeofday(&start,NULL); 
  12. void stopTimer() 
  13.     gettimeofday(&end,NULL); 
  14. int getMs() 
  15.     return  (end.tv_sec - start.tv_sec)*1000 + (end.tv_usec-end.tv_usec)/1000; 
  16. int main() 
  17.     long i; 
  18.      
  19.     startTimer(); 
  20.     vector<unsigned char> v(N); 
  21.     v.reserve(N); 
  22.     for(i=0;i<N;i++) 
  23.         v.push_back(12); 
  24.     stopTimer(); 
  25.     cout<<getMs()<<endl; 
  26.      
  27.     startTimer(); 
  28.     for(i=0;i<N;i++) 
  29.         bytes_array[i]=12; 
  30.     stopTimer(); 
  31.     cout<<getMs()<<endl; 
  32.  
  33.     startTimer(); 
  34.     bytes_array_dynamic = (unsigned char *)malloc(sizeof(unsigned char)*N); 
  35.     for(i=0;i<N;i++) 
  36.         bytes_array_dynamic[i] = 12; 
  37.     stopTimer(); 
  38.     cout<<getMs()<<endl; 
  39.  
  40.     return 0; 

    運行結果以下:數據結構

     

  
  
  
  
  1. 15000 
  2. 3000 
  3. 6000 

    可見使用vector向量速度最慢,使用全局最快,使用動態開闢空間的方式介於兩者之間。ide

相關文章
相關標籤/搜索