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

5 篇文章 1 订阅

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();
}

结果如下:

 

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值