文章目录
简介
用Bjarne Stroustrup的话来说:默认情况下,当你需要一个容器时使用 Vector。
Vector 只是一个工具,像任何工具一样,它可以有效地使用,也可以无效地使用。
本文介绍 6 种优化vector使用的方法,研究使用vector执行最常见编程任务的有效和低效方法,衡量我们通过有效使用vector获得的性能增益,并尝试理解为什么我们会获得性能增益。
性能测试的实施方法
用标准库 chrono 制作一个秒表记录函数运行时间,我们将每个测试运行100次取平均运行时间进行比较。
代码放最后链接里。
注意:结果测试用 Release,别用Debug。
运行结果:
一 、通过提前保留向量的大小来避免不必要的重新分配和复制周期
程序员喜欢vector是因为可以向容器中添加项目时无需提前担心容器的大小。但是,仅从容量为 0 的vector开始并在元素进来时添加它可能会花费相当多的运行时性能,如果你提前知道你的 vector 可以有多大,那么提前保留大小是值得的。
// #1: 通过提前保留vector的大小,避免不必要的重新分配和复制周期。
vector<BigTestStruct> testVector1;
vector<BigTestStruct> testVector2;
for (int i = 0; i < 100; i++)
{
sw.Restart