我正在建立一个翻译,因为这次我的目标是原始速度,所以在这个(原始)情况下,每个时钟周期对我都很重要.
您是否有任何经验或信息两者更快:Vector或Array?重要的是我可以访问元素的速度(操作码接收),我不关心插入,分配,排序等.
我现在要把自己从窗户里拉出来说:
这对我来说似乎很合乎逻辑.使用向量,您可以获得阵列不存在的所有安全性和控制开销.
(为什么)我错了?
不,我不能忽视性能差异 - 即使它是如此之小 - 我已经优化并最小化执行操作码的VM的每个其他部分:)
我正在尝试优化我的C++代码.我使用动态分配的C++数组和使用std :: vector搜索互联网,并且通常看到有利于std :: vector的建议,并且两者之间的性能差异可以忽略不计.例如,在C++中使用数组或std :: vector,性能差距是多少?.
但是,我编写了一些代码来测试迭代数组/向量并为元素赋值的性能,我通常发现使用动态分配的数组比使用向量快近3倍(我事先指定了向量的大小) ).我用过g ++ - 4.3.2.
但是我觉得我的考试可能忽略了我不知道的问题,所以我很感激你对这个问题的任何建议.
谢谢
使用的代码 -
#include <time.h>
#include <iostream>
#include <vector>
using namespace std;
int main() {
clock_t start,end;
std::vector<int> vec(9999999);
std::vector<int>::iterator vecIt = vec.begin();
std::vector<int>::iterator vecEnd = vec.end();
start = clock();
for (int i = 0; vecIt != vecEnd; i++) {
*(vecIt++) = i;
}
end = clock();
cout<<"vector: "<<(double)(end-start)/CLOCKS_PER_SEC<<endl;
int* arr = new int[9999999];
start = clock();
for (int i = 0; i < 9999999; …Run Code Online (Sandbox Code Playgroud)