C++ vector与C风格数组性能对比异常,求排查原因
分析你的vector vs C数组性能测试问题
嘿,我来帮你拆解下为什么你的测试结果和文献结论不符——问题出在测试的操作并不完全等价,还有一些测试方法上的小问题,具体来说:
1. 核心差异:vector的默认初始化带来额外开销
你测试的getVector1里,std::vector<int> ivec(n)会对所有n个int元素进行值初始化(也就是把每个元素设为0),之后你又遍历一遍给每个元素赋值;而getVector2里的new int[n]只是分配了未初始化的内存,直接赋值覆盖即可。
这就相当于vector做了两次内存操作:先填0,再填目标值;而数组只做了一次。这是两者性能差距的主要原因!
2. 测试逻辑的细微不一致
getVector1里的赋值是`x = ++i
相关产品推荐
相关产品推荐

