相关疑难解决方法(0)

C++ STL:Array vs Vector:原始元素访问性能

我正在建立一个翻译,因为这次我的目标是原始速度,所以在这个(原始)情况下,每个时钟周期对我都很重要.

您是否有任何经验或信息两者更快:Vector或Array?重要的是我可以访问元素的速度(操作码接收),我不关心插入,分配,排序等.

我现在要把自己从窗户里拉出来说:

  • 在访问元素i方面,数组至少比向量快一点.

这对我来说似乎很合乎逻辑.使用向量,您可以获得阵列不存在的所有安全性和控制开销.

(为什么)我错了?

不,我不能忽视性能差异 - 即使它是如此之小 - 我已经优化并最小化执行操作码的VM的每个其他部分:)

c++ arrays stl vector

27
推荐指数
2
解决办法
2万
查看次数

动态分配的数组或std :: vector

我正在尝试优化我的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)

c++ optimization performance stl

6
推荐指数
3
解决办法
5199
查看次数

标签 统计

c++ ×2

stl ×2

arrays ×1

optimization ×1

performance ×1

vector ×1