博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于vector性能的测试(一)
阅读量:7079 次
发布时间:2019-06-28

本文共 1065 字,大约阅读时间需要 3 分钟。

  最近需要对一个大数据块进行压缩传输,数据块大小最大将近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向量速度最慢,使用全局最快,使用动态开辟空间的方式介于二者之间。

本文转自hipercomer 51CTO博客,原文链接:http://blog.51cto.com/hipercomer/801643

转载地址:http://mkjml.baihongyu.com/

你可能感兴趣的文章
Angular通过订阅观察者对象实现不同组件中数据的实时传递
查看>>
Bitmap的图片压缩汇总
查看>>
树莓派学习手记——制作一个空调遥控器(红外接收、发射的实现)
查看>>
《Maven实战》阅读总结(二)Maven仓库
查看>>
【369天】每日项目总结系列106(2018.02.09)
查看>>
WordPress 主题开发:从入门到精通(必读)
查看>>
Vue入坑记
查看>>
#ReactApp项目构建流程【3】
查看>>
canal 1.0.25 快速启动配置
查看>>
SpringBoot使用AOP+注解实现简单的权限验证
查看>>
Android 8.0 系统和API的变化
查看>>
Git 多人协作开发流程
查看>>
js 时间对象的常规操作
查看>>
BiuJS[v1.0]说明文档(2):数据劫持
查看>>
Centos 7 Yum方式安装Mongdb 3.4
查看>>
遇见大数据可视化 : 【云图】让数据可见
查看>>
Mac Docker 创建第一个Django 应用,Part 1
查看>>
zendAPI 的 CMake 参数详解
查看>>
【201天】黑马程序员27天视频学习笔记【Day18复习脑图】
查看>>
vue+webpack搭建单文件应用和多文件应用webpack.config.js的写法区别
查看>>