当前位置: 首页 > 编程日记 > 正文

C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(ubuntu g++)——删除

相关环境和说明在《C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(ubuntu g++)——插入》已给出。本文将分析从头部、中间和尾部对各个容器进行删除的性能。(转载请指明出于breaksoftware的csdn博客)

删除

头部删除

元素个数>15000

erase_begin_16384_highest
erase_begin_16384_highest

vector容器性能最差。由于它和其他容器性能差距比较大,我们将其从图中去除。

erase_begin_16384
erase_begin_16384

除了set表现不好之外,其他容器都差不多。其中表现最好的是list和forward_list。

元素个数<4096

erase_begin_4096
erase_begin_4096

由于vector持续的表现的最差,我就没在上图中将其列出。

set在这个场景下表现也很差。deque在元素超过2500左右时,“迎头赶上”,成为第三差的容器。

元素个数<1024

erase_begin_1024
erase_begin_1024标题

可以看到deque的性能在此时是最好的,明显要优于list和forward_list。

元素个数<256

erase_begin_256
erase_begin_256

对于小容器,deque、list和forward_list的表现最好。

对比结果:

vector表现最差。

容器元素比较多时,list和forward_list性能最好。

元素少于2500左右时,deque的性能最好。

中间删除

元素个数>15000

erase_mid_16256_highest
erase_mid_16256_highest

vector的性能最差。

erase_mid_16256
erase_mid_16256

除了vector,表现最差的是map系列的三个容器:multimap、map和unordered_multimap。

表现最好的是list和forward_list。

由于vector表现的太差,之后中间删除的图例都不再列出它。

元素个数<4096

erase_mid_4096
erase_mid_4096

deque在元素个数达到1800左右执行了高耗时操作。在此之前它要优于list。

元素个数<256

erase_mid_256
erase_mid_256

对于小容器,效率最好的依次是:forward_list、deque和list。

对比结果:

vector性能最差。

list和forward_list在各种容器大小时,表现都很好。

deque在元素个数少于1800左右时,表现仅次于forward_list。

尾部删除

元素个数>15000

erase_end_16384_highest
erase_end_16384_highest

之前各个场景下表现优异的forward_list此时表现的极差。由于差异非常大,之后各个容器大小图例中都将不包含它。

erase_end_16384
erase_end_16384

vector表现最优,其次是deque和list。非关联容器的表现都由于关联容器。

元素个数<256

erase_end_256
erase_end_256

大容器的表现在小容器上也有着相似的体现。

结果对比:

vector的效率最优。其次是deque和list。

forward_list效率最差。

结论:

vector在头部和中间删除时,表现极差;在尾部删除时,表现优异。

forward_list在尾部删除时,表现极差;头部和中间删除时,表现优异。

list在各个场景下表现均较为优异。

deque在元素少于2500左右时,效率比较优秀。元素超过这个阈值后,头部删除效率较差,中间和尾部删除仍然不错。

文中图例可从以下地址获取:https://github.com/f304646673/stl_perf/tree/master/linux

相关文章:

一文告诉你,如何使用Python构建一个“谷歌搜索”系统 | 内附代码

来源 | hackernoon编译 | 武明利责编 | Carol出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;在这篇文章中&#xff0c;我将向您展示如何使用Python构建自己的答案查找系统。基本上&#xff0c;这种自动化可以从图片中找到多项选择题的答案。有一件事我们要清楚&…

WatchStor观察:思科携EMC等合作伙伴 圈地数据中心市场

早在今年3月&#xff0c;思科在加利福尼亚州圣何塞市展会中展示了“统一计算系统”(Unified Computing System)之后&#xff0c;我们就明白&#xff0c;数据中心市场将会发生巨大改变&#xff0c;传统的以IBM、惠普、戴尔和Sun为主导的服务器电脑市场&#xff0c;将受到以思科为…

使用BabeLua3.x在cocos2d-x中编辑和调试Lua

BabeLua是一款基于VS2012/2013的Lua集成开发环境&#xff0c;具有Lua语法高亮&#xff0c;语法检查&#xff0c;自动补全&#xff0c;快速搜索&#xff0c;注入宿主程序内对Lua脚本进行调试&#xff0c;设置断点观察变量值&#xff0c;查看堆栈信息等功能。 如何安装 请参考《系…

ASA与PIX的区别

很多年来&#xff0c;Cisco PIX一直都是Cisco确定的防火墙。但是在2005年5月&#xff0c;Cisco推出了一个新的产品——适应性安全产品&#xff08;ASA&#xff0c;Adaptive Security Appliance&#xff09;。不过&#xff0c;PIX还依旧可用。我已听到很多人在多次询问这两个产品…

C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(ubuntu g++)——遍历和查找

相关环境和说明在《C拾趣——STL容器的插入、删除、遍历和查找操作性能对比&#xff08;ubuntu g&#xff09;——插入》已给出。本文将分析各个容器中遍历和查找的性能。&#xff08;转载请指明出于breaksoftware的csdn博客&#xff09; 遍历 从前往后 元素个数>15000 t…

买不到口罩怎么办?Python爬虫帮你时刻盯着自动下单!| 原力计划

作者 | 菜园子哇编辑 | 唐小引来源 | CSDN 博客马上上班了&#xff0c;回来的路上&#xff0c;上班地铁上都是非常急需口罩的。目前也非常难买到正品、发货快的口罩&#xff0c;许多药店都售完了。并且&#xff0c;淘宝上一些新店口罩库存写着非常多&#xff0c;但不发货&#…

GlusterFS下如何修复裂脑文件?(续一)

关于网上一些修复GlusterFS裂脑文件的说明1、Fixing a GlusterFS split-brainhttps://inuits.eu/blog/fixing-glusterfs-split-brain在该文章中&#xff0c;删除无效副本时提供的方法如下&#xff1a;srv02$ sudo find /export/brick1/sdb1/ -samefile /export/brick1/sdb1/tes…

MySQL数据库环境使用全过程

在使用MySQL之前&#xff0c;需要建立数据库的环境来创建数据表&#xff0c;首先我们需要安装该数据库环境&#xff0c;即MySQL。1、下载MySQLMySQL的官方网站是http://www.mysql.org/&#xff0c;如图2-9所示&#xff1a;图2-9 MySQL官方网站当前稳定版本为5.1&#xff0c;我…

C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(Windows VirtualStudio)——插入

操作系统是Windows10 64bit&#xff0c;编译器是 Microsoft Virtual Studio Community 10。编译产出是64位测试程序。&#xff08;转载请指明出于breaksoftware的csdn博客&#xff09; 因为加入测量&#xff0c;就会导致误差。我已经尽量将环境影响降低&#xff0c;但是还是难免…

“夸夸机器人”App来了:变身百万粉丝大V,48万人给你的帖子点赞

来源 | mashable译者 | Kolen出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;我在Botnet上的第一条帖子获得了48万个赞。一款全新的社交媒体风格的应用为用户提供了生活在一个奇特网络虚拟世界的机会。在这个世界里&#xff0c;你将拥有数以百万计的粉丝&#xff0c;…

leetcode Reverse Linked List

Reverse a singly linked list 对于这种可以修改值的&#xff0c;把值逆序就可以了。。。。用vector存&#xff0c;然后逆序读。 都忘了指针怎么赋值初始化了。*p&head; 1 /**2 * Definition for singly-linked list.3 * struct ListNode {4 * int val;5 * Lis…

抗击新冠肺炎,如何进行实时动态时序图谱建模与分析?

作者 | 闭雨哲来源 | ThutmoseAI背景介绍新冠肺炎是一种具有最长达24天潜伏期的新型突发性传染疾病&#xff0c;这种特性给疫情防控带来了巨大的挑战&#xff0c;随着感染规模的不断扩增&#xff0c;简单的人为治理已不太奏效&#xff0c;使用“大数据”技术手段来辅助人为治理…

C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(Windows VirtualStudio)——删除

相关环境和说明在《C拾趣——STL容器的插入、删除、遍历和查找操作性能对比&#xff08;Windows VirtualStudio&#xff09;——插入》已给出。本文将分析从头部、中间和尾部对各个容器进行删除的性能。&#xff08;转载请指明出于breaksoftware的csdn博客&#xff09; 删除 …

关于服务器启动慢的问题

今天去了家医院的机房&#xff0c;走进去一看&#xff0c;TMD的医院就是有钱&#xff0c;全是光纤和千兆网络环境&#xff0c;全全是思科的三层交换机和路由器&#xff0c;HP的服务器。我们需要安装点东西&#xff0c;登录一台服务器&#xff0c;我一看配置&#xff0c;呵呵&am…

python依赖包exe文件安装问题

2019独角兽企业重金招聘Python工程师标准>>> 在使用python的exe程序安装依赖包的时候&#xff0c;经常会出现类似于下面的错误&#xff1a; python version 2.7 required,which was not found in the registry 可以使用如下代码解决该问题: # # script to register …

C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(Windows VirtualStudio)——遍历和删除

相关环境和说明在《C拾趣——STL容器的插入、删除、遍历和查找操作性能对比&#xff08;Windows VirtualStudio&#xff09;——插入》已给出。本文将分析各个容器中遍历和查找的性能。&#xff08;转载请指明出于breaksoftware的csdn博客&#xff09; 遍历 从前往后 travers…

技术战“疫”,贾扬清、李飞飞要给程序员直播讲AI技术!

「时势造英雄&#xff0c;英雄亦造时势。」在这场波及全球且看不见硝烟的疫情下&#xff0c;无数英雄日夜奋战&#xff0c;无论是身处一线的医护工作者、政府职能部门、志愿者&#xff0c;还是坚守在家的人民群众&#xff0c;都在尽自己所能&#xff0c;在行动&#xff01;与此…

关于端口映射的一个命令

今天安装一个远程会诊的系统&#xff0c;由于是在不同和的地方&#xff0c;需要在路由器上作下映射&#xff0c;由于是要远程连接对方的服务器&#xff0c;所以要在对方的路由器上设置下Interface fastethernet0/0 Ip address 192.168.1.1 255.255.255.0 Duplex auto Speed aut…

elasticsearch简介

Elasticsearch是 面向文档型数据库&#xff0c;这意味着它存储的是整个对象或者 文档&#xff0c;它不但会存储它们&#xff0c;还会为他们建立索引&#xff0c;这样你就可以搜索他们了。你可以在 Elasticsearch 中索引、搜索、排序和过滤这些文档。不需要成行成列的数据。所以…

C++拾取——使用stl标准库生成等差、等比数列的方法

代码是思想的表达。阅读代码是一个猜测、求证的过程。这个过程非常费脑&#xff0c;所以人们都不喜欢啰啰嗦嗦的表达方式。于是在相同认知水平下&#xff0c;简洁高效的表达是喜闻乐见的。本文将抛砖引玉&#xff0c;通过一些案例讲解如何去简化代码。&#xff08;转载请指明出…

利用NetBIOS名称与其他计算机通信

当某台计算机与网络中的其他计算机通信时&#xff0c;它是如何依据对方的计算机名称来得知其IP地址呢&#xff1f;名称解析的方法有以下几种&#xff1a; 检查NetBIOS名称缓存&#xff08;NetBIOS name cache&#xff09;广播直接向WINS服务器查询何谓NetBIOS名称&#xff1a;如…

编程语言性能实测,Go比Python更胜一筹?

作者 | Pawel Dziubałka, Sebastian Karasiewicz译者 | 泓技出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;互联网上有非常多的精彩代码&#xff0c;它们成了构建各种基础设施的基础。你正在阅读的这个平台同样也在致力于创建出色的代码。尽管普通用户一般不会注意…

mysql备份策略的制定

需要考虑的因素&#xff1a; 1. 数据库是不是都是innoDB引擎表 -》决定备份方式&#xff0c;热备或冷备 2. 数据量大小 -》逻辑备&#xff08;量小&#xff09;或物理备&#xff0c;全量或增量 3. 数据库本地空间是否充足 -》备份到本地或远程 4. 需要多快恢复 -》备份频率 小时…

C++拾取——使用stl标准库实现排序算法及评测

今天看了一篇文章&#xff0c;讲各种语言的优势和劣势。其中一个观点&#xff1a;haskell非常适合写算法&#xff0c;因为使用者不用去关心具体的计算机实现&#xff0c;而只要关注于操作语义。这让它在专心研究算法的人中非常受欢迎。所以很多时候&#xff0c;语言的争论没有太…

几行代码构建全功能的对象检测模型,他是如何做到的?

作者 | Alan Bi 译者 | 武明利&#xff0c;责编 | Carol 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 如今&#xff0c;机器学习和计算机视觉已成为一种热潮。我们都看过关于自动驾驶汽车和面部识别的新闻&#xff0c;可能会想象建立自己的计算机视觉模型有多酷。…

SQL操作全集

SQL操作全集 下列语句部分是Mssql语句&#xff0c;不可以在access中使用。 SQL分类&#xff1a; DDL—数据定义语言(CREATE&#xff0c;ALTER&#xff0c;DROP&#xff0c;DECLARE) DML—数据操纵语言(SELECT&#xff0c;DELETE&#xff0c;UPDATE&#xff0c;INSERT) DCL—数据…

css3媒体查询实现网站响应式布局

响应式建筑设计、响应式家具设计、响应式办公设计&#xff0c;这些词可能是已有的专业名词&#xff0c;也可能是我自己想出来的一些名词。因为在生活中&#xff0c;我们常常会见到很多让人惊叹的设计&#xff0c;为什么同一套东西经过不同的方式变化之后会给人不同的使用感受和…

流行于机器学习竞赛的Boosting,这篇文章讲的非常全了

作者 | AISHWARYA SINGH译者 | 武明利&#xff0c;责编 | Carol出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;你能说出至少两种机器学习中的 Boosting 吗&#xff1f;Boosting 已经存在了很多年&#xff0c;然而直到最近它们才成为机器学习社区的主流。那么&#x…

并行计算——OpenMP加速矩阵相乘

OpenMP是一套基于共享内存方式的多线程并发编程库。第一次接触它大概在半年前&#xff0c;也就是研究cuda编程的那段时间。OpenMP产生的线程运行于CPU上&#xff0c;这和cuda不同。由于GPU的cuda核心非常多&#xff0c;可以进行大量的并行计算&#xff0c;所以我们更多的谈论的…

JavaScript继承详解(四)

文章截图 - 更好的排版 在本章中&#xff0c;我们将分析Douglas Crockford关于JavaScript继承的一个实现 - Classical Inheritance in JavaScript。 Crockford是JavaScript开发社区最知名的权威&#xff0c;是JSON、JSLint、JSMin和ADSafe之父&#xff0c;是《JavaScript: The …