闲:测试memcpy和std::copy vector之间拷贝
预测:底层C函数肯定比stl算法快
结果:少量数据底层快,大数据以上则stl对vector的处理可能更好
C/C++:
#include <iostream>
#include <vector>
#include <functional>
#include <algorithm>
#include <string>
template<typename T>
void Display(const T &rhs)
{
for (auto iter = rhs.begin(); iter != rhs.end();)
{
printf("%c\n", *iter++);
}
}
int main()
{
std::vector<char> vec1_;
char ch = 'a';
; i < ; i++)
{
vec1_.push_back(ch);
}
std::clock_t start, end;
start = std::clock();
std::vector<char> vec2_(vec1_.begin(), vec1_.end());
end = std::clock();
std::cout << "迭代器范围初始化: " << ((double)(end-start)/CLOCKS_PER_SEC) << std::endl;
// Display(vec2_);
start = std::clock();
std::vector<char> vec3_;
vec3_.resize(vec1_.size());
std::copy(vec1_.begin(), vec1_.end(), vec3_.begin());
end = std::clock();
std::cout << "std::copy: " << ((double)(end-start)/CLOCKS_PER_SEC) << std::endl;
// Display(vec3_);
start = std::clock();
std::vector<char> vec4_;
vec4_.resize(vec1_.size());
std::memcpy(&vec4_[], &vec1_[], vec1_.size());
end = std::clock();
std::cout << "memcpy: " << ((double)(end-start)/CLOCKS_PER_SEC) << std::endl;
//Display(vec4_);
;
}
注意点:memcpy 只能按字节拷贝,所以选择char进行,实际意义不明显...
闲:测试memcpy和std::copy vector之间拷贝的更多相关文章
- std::copy的使用
看到有人在用std::copy这个东西,很简洁和爽啊,,所以找些帖子学习学习 http://blog.sina.com.cn/s/blog_8655aeca0100t6qe.html https:// ...
- std::copy性能分析与memmove机器级实现
复制数据的快速方法std::copy C++复制数据各种方法大家都会,很多时候我们都会用到std::copy这个STL函数,这个效率确实很不错,比我们一个一个元素复制或者用迭代器复制都来的要快很多. ...
- std::copy 和 std::back_inserter
#define print_vector(v1) \ for(auto iter = v1.begin();iter != v1.end();iter++) \ cout<<*iter&l ...
- std::copy使用方法
推荐2个c++函数库,类定义的资料库: http://en.cppreference.com/w/cpp/algorithm/copy http://www.cplusplus.com/referen ...
- std::copy ( myvector.begin(), myvector.end(), out_it )
在实际生产环境中,不能进行调试,所以程序通常需要编译一个DEBUG版本来辅助我们找出问题所在,编译这样的DEBUG版本最常用的手段就是在关键处输出我们关心一些变量的值到屏幕. 如果输出的简单的变量值, ...
- COPY - 在表和文件之间拷贝数据
SYNOPSIS COPY tablename [ ( column [, ...] ) ] FROM { 'filename' | STDIN } [ [ WITH ] [ BINARY ] [ O ...
- (c++ std) 查找 vector 中的元素
You can use std::find from <algorithm>: std::find(vector.begin(), vector.end(), item) != vecto ...
- 两个linux之间拷贝文件及文件夹
Linux为我们提供了两个用于文件copy的命令.一个是cp,一个是scp,可是他们略有不同,cp 主要是用于在同一台电脑上,在不同的文件夹之间来回copy文件 scp 主要是在不同的Linux系统之 ...
- 使用pscp命令在Windows与linux之间拷贝文件
在Linux环境下做开发时,我们可能会在windows下远程控制Linux系统,本文介绍如何使用putty的pscp.exe在Windows和 Linux(本文使用fedora)之间copy文件. 工 ...
随机推荐
- python之multiprocessing创建进程
python的multiprocessing模块是用来创建多进程的,下面对multiprocessing总结一下使用记录. multiprocessing创建多进程在windows和linux系统下的 ...
- js备忘录1
新建对象 赋值和取值操作 var book={ topic:"JavaScript", fat: true }; book.topic 通过点访问 book["fat& ...
- 团队博客作业Week4 --- 学霸网站--NABC
1.需求(Need) 伴随着经济的发展,科学技术取得了飞速的发展,互联网在各行各业的发展中取得了广泛的应用.随着这些事物的发展,我们每个人都会接触到相当庞大的数据.如何在这些数据中找到自己需要的,如何 ...
- 解决Cygwin编译cocos2dx 遇到的 error: 'UINT64_C' was not declared in this scope 问题
环境工具:Win10.VS2013.cocos2d-x-2.2.6.Cygwin.ADT 问题来源:写了一个小游戏,VS2013上运行成功,就尝试着打包apk,项目导入到ADT里面,添加了cocos2 ...
- ThoughtWorks.QRCode类库
ThoughtWorks.QRCode一个二维码生成类库.
- python learning IO.py
f = open('test.txt', 'r') # 'r' 表示只读 s = f.read() # 调用read()方法可以一次读取文件的全部内容,Python把内容读到内存,用一个str对象表示 ...
- java属性编辑器,即PropertyEditor
出处:http://www.iteye.com/topic/1123628
- maven导入项目时出现“Cannot read lifecycle mapping metadata …… invalid END header (bad central directory offset)pom”错误的解决方法
出现该错误是因为jar包版本不匹配,比如linux上的jar包导入到windows上了.可以将.m2\repository的org.apache.maven.plugins删掉然后让maven重新下载 ...
- 初识asp
1.ASP(Active Server Pages 动态服务器页面)是一种生成动态交互性网页的强有力工具 <!DOCTYPE html> <html> <body> ...
- linux创建账户并自动生成主目录和主目录下的文件
# useradd -d /home/test -m test; 然后给test设置密码. # passwd test; 1. useradd 添加用户或更新新创建用户的默认信息 语法:useradd ...