vector 测试
vector 测试
*/-->
div.org-src-container {
font-size: 85%;
font-family: monospace;
}
pre.src {
background-color:#2e3436;
color:#fefffe;
}
p {font-size: 15px}
li {font-size: 15px}
写个简单的东西来测试一下数据很多时候几种创建 vector 的方法,结果有点意思:
#include <iostream>
#include <sys/time.h>
#include <vector>
using namespace std;
typedef unsigned int uint32; struct Obj
{
Obj(int a1, int b1, int c1) : a(a1), b(b1), c(c1) {}
Obj(){};
int a;
int b;
int c;
}; static inline uint32 get_timems()
{
struct timeval tv;
return gettimeofday(&tv, NULL) == 0 ? \
(tv.tv_sec * 1000 + tv.tv_usec / 1000):0;
} #define N 10000000
#define LOG(X) printf(X ", costs: %u msecs\n", get_timems() - ts);
#define ITS() ts=get_timems() int main(int argc, char *argv[])
{
uint32 ts = get_timems();
vector<Obj> v;
for (int i = 0; i < N; ++i)
{
v.push_back(Obj(i, i-1, i-2));
} LOG("Create and push_back"); ITS();
vector<Obj> v4;
vector<Obj>::const_iterator iter = v.begin();
vector<Obj>::const_iterator end = v.end();
for (; iter != end; ++iter)
{
Obj o(iter->a, iter->b * 2, iter->c * 3);
v4.push_back(o);
}
LOG("Create and modify and push_back"); ITS();
vector<Obj> v5;
v5.resize(N);
for (int i = 0; i < N; ++i)
{
v5[i].a = v[i].a;
v5[i].b = v[i].b*2;
v5[i].c = v[i].c*3;
}
LOG("Resize and modify"); ITS();
vector<Obj> v6;
v5.reserve(N);
for (int i = 0; i < N; ++i)
{
v6.push_back(Obj (iter->a, iter->b * 2, iter->c * 3));
}
LOG("Reserver and push_back"); return 0;
}
输出如下:
Welcome to the Emacs shell ~/tmp $ ~/tmp $ ./test
Create and push_back, costs: 1057 msecs
Create and modify and push_back, costs: 1244 msecs
Resize and modify, costs: 447 msecs
Reserver and push_back, costs: 1181 msecs
(转载请注明出处,使用许可:署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议 。)
vector 测试的更多相关文章
- 02--STL序列容器(Vector)
一:vector容器简介 图片和顺序栈相似,但是vector数组是动态数组,支持随机存取--->但是在尾部添加或者溢出元素非常快速,中间插入删除费时 vector是将元素置于一个动态数组中加以管 ...
- C++ Vector实践
实践如下: #include <iostream> #include <vector> #include <typeinfo> using namespace st ...
- auto_ptr为什么不能做为vector的元素
昨天看effectve c++的时候,发现了auto_ptr这个东西.由于我待过的公司都是用的老版c++,代码里智能指针什么的完全没有出现过,都是直接操作的原始指针.虽说我很少出错,但是总归还是不太安 ...
- 侯捷STL课程及源码剖析学习1
1.C++标准库和STL C++标准库以header files形式呈现: C++标准库的header files不带后缀名(.h),例如#include <vector> 新式C hea ...
- word2vec训练中文模型
-- 这篇文章是一个学习.分析的博客 --- 1.准备数据与预处理 首先需要一份比较大的中文语料数据,可以考虑中文的维基百科(也可以试试搜狗的新闻语料库).中文维基百科的打包文件地址为 https: ...
- jvm高级特性(6)(线程的种类,调度,状态,安全程度,实现安全的方法,同步种类,锁优化,锁种类)
JVM高级特性与实践(十三):线程实现 与 Java线程调度 JVM高级特性与实践(十四):线程安全 与 锁优化 一. 线程的实现 线程其实是比进程更轻量级的调度执行单位. 线程的引入,可以把一个检查 ...
- Java中List效率的比较
Java Collections Framework(JCF) 是Java SE中一个基本的类集,几乎所有的项目都会用到,其中的List 则是JCF中最最常用的一个接口.围绕List 接口,有很多实现 ...
- 如何在List集合中去重
众所周知List集合中的元素是有序的,但是List中的元素同样是可以重复的,那么我们应该怎么在List集合中去重呢? 方法一: 对于方法一而言,这也许是一个小窍门.利用的是Set集合中不允许出现重复的 ...
- Vector使用测试
1.测试vector是否自动释放分配的空间 vector有大致两类申请空间的方式,一是vector(n,T()),一是vector(p,p+n)(p是自己申请的空间的指针). 其中第一种估计肯定会释放 ...
随机推荐
- C中有关引用和指针的异同
参考于https://blog.csdn.net/wtzdedaima/article/details/78377201 C语言也学了蛮久的,其实一直都没有用到过或者碰到过引用的例子.前端时间再全面复 ...
- Docker容器跨主机通信--overlay网络
一.Docker主机间容器通信的解决方案 Docker网络驱动 Overlay: 基于VXLAN封装实现Docker原生Overlay网络 Macvlan: Docker主机网卡接口逻辑上分为多个子接 ...
- python模块module package
python模块module package module package 常用模块 模块与包的区别 模块分为内置模块.第三方模块,自定义模块 程序会先从内置到第三方再到当前工作目录下去找你导入的 ...
- 项目经验总结-first
1. org.apache.commons.lang中StringUtils判空使用经验之谈 StringUtils.isEmpty(String str) 判断字符串str是否为空串且是否长度为0, ...
- P1075 质因数分解
P1075 质因数分解 题目描述 已知正整数 n 是两个不同的质数的乘积,试求出两者中较大的那个质数. 输入输出格式 输入格式: 一个正整数 n . 输出格式: 一个正整数 p ,即较大的那个质数. ...
- 转:NSString / NSData / char* 类型之间的转换
1. NSString转化为UNICODE String: (NSString*)fname = @“Test”; char fnameStr[10]; memcpy(fnameStr, [fname ...
- [非常重要的总结] Linux C相关函数
(1)字符测试函数 isalnum(测试字符是否为英文字母或数字) isalpha(测试字符是否为英文字母) isascii(测试字符是否为ASCII码字符) isblank(测试字符是否为空格字符) ...
- svn 节点处冲突 解决
问题描述: [root@localhost ] $ svn up 正在升级 ‘.’: 已跳过 ‘bg0605’ – 节点处于冲突状态 版本 175. 冲突概要: 跳过的路径:1 解决方法: 当前目录下 ...
- LazyMay:实现同步和异步任务的顺序执行
在掘金看到的文章,流程控制同步和异步任务的顺序执行,收益匪浅,工作中能用到. 1.实现以下效果 实现一个LazyMan,可以按照以下方式调用: LazyMan(“Hank”)输出: Hi! This ...
- 【操作记录】Asp.Net Core 的一些基本操作或属性
用于记录在项目中使用到的方法.属性.操作,持续更新中 .net core 开源地址 图片上传: public async Task<IActionResult> Upload([FromS ...