关于vector性能的测试(一)

     最近需要对一个大数据块进行压缩传输,数据块大小最大将近20个G,最小也就几十M,波动范围比较大。对于大块数据压缩后的存放上有点犹豫,对三种不同的数据结构进行测试,第一种为STL中的vector,第二种为全局缓冲区,第三种为动态缓冲区。

     测试代码如下:

      

 
 
  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向量速度最慢,使用全局最快,使用动态开辟空间的方式介于二者之间。

本文出自 “相信并热爱着” 博客,转载请与作者联系!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值