提高STL vector性能的6个技巧

本文介绍了提高STL vector性能的六个技巧,包括:1) 提前预留向量大小避免重新分配;2) 使用shrink_to_fit()释放内存;3) 优先选择赋值而非insert()或push_back();4) 避免在迭代时使用at()函数;5) 避免在vector头部插入数据;6) 使用emplace_back()代替push_back()。通过这些技巧,可以显著提升vector的运行效率。
摘要由CSDN通过智能技术生成


简介

用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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值