vector的遍历和赋值的性能测试

xiaoxiao2021-02-28  91

vector经常会用到,也经常会遍历,笔者工作需要测了下几种遍历方法的性能,贴在这里。

代码如下:

#include <cstdio> #include<iostream> #include<string> #include<vector> using namespace std; vector<string> v; string s; void init1() { for (size_t i = 0; i < 100000; i++) { v.push_back("hello"); } } void init2() { vector<string> v(100000); for (size_t i = 0; i < 100000; i++) { v[i] = "hello"; } } void traversal1() { int n = v.size(); for (size_t i = 0; i < n; i++) { s = v[i]; } } void traversal2() { for (size_t i = 0; i < v.size(); i++) { s = v[i]; } } void traversal3() { for (vector<string>::iterator it = v.begin(); it != v.end(); it++) { s = *it; } } void traversal4() { for(string temp:v) { s = temp; } } void traversal5() { for each (string var in v) { s = var; } } int main() { init1(); init2(); traversal1(); traversal2(); traversal3(); traversal4(); traversal5(); }

结果如下:

 

可见第一种遍历方式性能最佳,

第四种第五种遍历方式虽然写起来很简洁,但是性能渣得像坨屎

提前分配好容器大小会比动态增加容器大小性能要好,但是使用起来不是很方便。

转载请注明原文地址: https://www.6miu.com/read-30511.html

最新回复(0)