cpp vector resize和重新生成新的vector耗时比较
【cpp vector resize和重新生成新的vector耗时比较】1.问题背景
在工作过程中遇到一个需要使用vector.resize(size),之后将vector中的数据统一重置为0的场景,然后想了一下,如果从一个比较小的内存区域resize到一个比较大的内存区域,就需要重新开一块内存空间,并且将原来空间的数据复制一遍,个人怀疑会不会直接用vector的构造函数来重新生成一块空间会比较好,上网搜了一下,都是讨论resize和reserve的,可能是这个问题太简单了,所以没人发到网上,所以我自己写了几行代码验证了一下。
2.代码验证
#include
#include
#include
#include
#include
#include
#include
#include
#include "base.h"void printFunctionTime(void(*f)(const std::vector&),const std::vector& sizes)
{
printf("the before time %d\n",time(nullptr));
f(sizes);
printf("the after time %d\n",time(nullptr));
}void testResize(const std::vector& sizes)
{
std::vector vec(1);
for(auto i:sizes)
{
vec.resize(i);
}
}void testReGen(const std::vector& sizes)
{
for(auto i:sizes)
{
std::vector vec(i+1,0);
}
}int main()
{
srand(time(nullptr));
std::vector sizes;
constexprint sizeOfSizes = 20000;
for(int i=0;
i
随机的将一个vector在0-sizeOfSizes的大小内resize sizeOfSizes次,和直接重新生成这么多次进行比较。打印两种操作的消耗时间进行对比。
3.实验结果
the before time 1591064487
the after time 1591064488
the before time 1591064488
the after time 1591064493
可以看出,resize的速度远比重新生成快。
推荐阅读
- NeuVector 会是下一个爆款云原生安全神器吗()
- Crack|vectordraw图形库,提高了 WebGL 3D 渲染模式的性能
- 机器学习算法系列(十五)-软间隔支持向量机算法(Soft-margin Support Vector Machine)
- 机器学习算法系列(十四)-硬间隔支持向量机算法(Hard-margin Support Vector Machine)
- 【C/C++实用工具】内存相关问题排查工具---cppcheck与valgrind
- 使用vector代替数组
- c++ list vector
- qt常用快捷键
- file_operation
- CPosition