C++ STL vector 性能之push_back、emplace_back、reserve
#include <iostream>
#include <vector>
#include <chrono>
using namespace std;
constexpr int N = 10;
void timeMeasure(void(*f)()){
auto begin = std::chrono::high_resolution_clock::now();
uint32_t iterations = 10000;
for(uint32_t i = 0; i < iterations; ++i)
{
f();
}
auto end = std::chrono::high_resolution_clock::now();
auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(end-begin).count();
std::cout << duration << "ms total, average : " << duration * 1.0 / iterations << "ms." << std::endl;
}
void testPushBack(){
vector<int> arr;
for(int i = 0; i < N; i++){
arr.push_back(i);
}
}
void testEmplaceBack(){
vector<int> arr;
for(int i = 0; i < N; i++){
arr.emplace_back(i);
}
}
void testReserveWithPush(){
vector<int> arr;
arr.reserve(N);
for(int i = 0; i < N; i++){
arr.push_back(i);
}
}
void testReserveWithEmplace(){
vector<int> arr;
arr.reserve(N);
for(int i = 0; i < N; i++){
arr.emplace_back(i);
}
}
void testInitAndAssign(){
vector<int> arr(N);
for(int i = 0; i < N; i++){
arr[i] = i;
}
}
int main(){
timeMeasure(testPushBack);
timeMeasure(testEmplaceBack);
timeMeasure(testReserveWithPush);
timeMeasure(testReserveWithEmplace);
timeMeasure(testInitAndAssign);
return 0;
}
21ms total, average : 0.0021ms.
11ms total, average : 0.0011ms.
2ms total, average : 0.0002ms.
2ms total, average : 0.0002ms.
2ms total, average : 0.0002ms.
C++ STL vector 性能之push_back、emplace_back、reserve的更多相关文章
- C++ STL vector 内存分配
vector为了支持快速的随机访问,vector容器的元素以连续方式存放,每一个元素都紧挨着前一个元素存储. 当vector添加一个元素时,为了满足连续存放这个特性,都需要重新分配空间.拷贝元素.撤销 ...
- C++ STL vector容器学习
STL(Standard Template Library)标准模板库是C++最重要的组成部分,它提供了一组表示容器.迭代器.函数对象和算法的模板.其中容器是存储类型相同的数据的结构(如vector, ...
- STL vector
STL vector vector是线性容器,它的元素严格的按照线性序列排序,和动态数组很相似,和数组一样,它的元素存储在一块连续的存储空间中,这也意味着我们不仅可以使用迭代器(iterator)访问 ...
- STL vector用法介绍
STL vector用法介绍 介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和f ...
- STL vector 用法介绍
介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用.通 ...
- STL vector使用方法介绍
介绍 这篇文章的目的是为了介绍std::vector,怎样恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用.通 ...
- C++STL vector详解(杂谈)
介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用.通 ...
- C++ STL vector(向量容器)的使用(附完整程序代码)
一.简单介绍 Vectors 包括着一系列连续存储的元素,其行为和数组类似. 訪问Vector中的随意元素或从末尾加入元素都能够在O(1)内完毕,而查找特定值的元素所处的位置或是在Vector中插入元 ...
- C++ stl vector介绍
转自: STL vector用法介绍 介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if ...
- C++ Daily《2》----vector容器的resize 与 reserve的区别
C++ STL 库中 vector 容器的 resize 和 reserve 区别是什么? 1. resize 改变 size 大小,而 reserve 改变 capacity, 不改变size. 2 ...
随机推荐
- 怎么判断一个变量arr的话是否为数组(此题用 typeof 不行)?
arr instanceof Array arr.constructor == Array Object.protype.toString.call(arr) == '[Object Array]'
- ASP.NET Core中创建中间件的几种方式
前言 今天我们一起来盘点一下在ASP.NET Core应用程序中添加和创建中间件常见的四种方式. 中间件介绍 ASP.NET Core中间件(Middleware)是用于处理HTTP请求和响应的组件, ...
- 女朋友问我 LB 是谁?
科普一下 LB(负载均衡)技术 我的编程导航网站:www.code-nav.cn 大家好,我是鱼皮. 周末在家写代码,无意中跟女朋友提了下 LB,还说 LB 好的呱呱叫. 她笑了笑,问我 LB 是谁? ...
- PAT-1003 我要通过! (20分) JavaScript(node)
"答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的"答案正确"大派送 -- 只要读入的字符串满足下列条件,系统就输出"答案正确&q ...
- SpringSecurity:hasAuthority与自定义权限校验
springsecurity中有两种权限控制方法 1.基于注解 @PreAuthorize("hasAuthority('syst:add')") 他的作用是在controller ...
- 新版宝塔面板快速搭建WordPress新手教程
一.宝塔面板介绍 1. 介绍 宝塔面板是一款服务器管理软件,支持Windows和Linux系统,可以通过Web端轻松管理服务器,提升运维效率,该软件内置了创建管理网站.FTP.数据库.可视化文件管理器 ...
- 【Zookeeper】Re03 集群搭建
我这里采用的是模拟真实情况: 部署三台虚拟机Centos7 192.168.242.101 192.168.242.102 192.168.242.103 每台机器都安装Zookeeper且一致: / ...
- model.train方法的dataset_sink_mode参数设置为False时以step作为单位打印数据——(只在mode=context.GRAPH_MODE下成立,在mode=context.PYNATIVE_MODE模式下不成立)
如题: 官方中的内容支持: https://www.mindspore.cn/tutorial/training/zh-CN/r1.2/advanced_use/summary_record.html ...
- vim跳转到上次和下次光标位置
在vim的命令模式下: ctrl + i 下次光标位置; ctrl + o 上次光标位置. =====================================
- 最新版gym-0.26.2下Atari环境的安装以及环境版本v0,v4,v5的说明
强化学习的游戏仿真环境可以分为连续控制和非连续控制两类,其中连续控制的以mujoco为主,而非连续控制的以Atari游戏为主,本文对gym下的Atari环境的游戏环境版本进行一定的介绍. 参考:[转载 ...