闲:测试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参数传递,既不是传值也不是传引用
面试的时候,有没有被问到Python传参是传引用还是传值这种问题?有没有听到过Python传参既不是传值也不是传引用这种说法?一个小小的参数默认值也可能让代码出现难以查找的bug? 如果你也遇到过上面 ...
- 虚拟机搭建Hadoop集群
安装包准备 操作系统:ubuntu-16.04.3-desktop-amd64.iso 软件包:VirtualBox 安装包:hadoop-3.0.0.tar.gz,jdk-8u161-linux-x ...
- django_models后台管理myarya
arya重点代码 # urls.py from django.urls import path,re_path,include from arya.service import v1 urlpatte ...
- 必应词典手机版(IOS版)与有道词典(IOS版)之软件分析【功能篇】【用户体验篇】
1.序言: 随着手机功能的不断更新和推广,手机应用市场的竞争变得愈发激烈.这次我们选择必应词典和有道词典的苹果客户端作对比,进一步分析这两款词典的客户端在功能和用户体验方面的利弊.这次测评的主要评测人 ...
- OO的第一次死亡
久仰OO大名,总是想着提前做点准备,其实到头来还是什么准备都没有做,所以这学期就是从零开始的面向对象生活,也因此遇到了很多的问题. 第一次作业——多项式加减 第一次作业历来是较为简单的,但是对于面向对 ...
- SpringMVC 常用注释
@Controller Controller控制器是通过服务接口定义的提供访问应用程序的一种行为 @Repository Dao层的标志 @RequestMapping 标注控制层函数的访问路径 ...
- 利用JAVA制作简单登录窗口
import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; ...
- oracle 语句之对数据库的表名就行模糊查询,对查询结果进行遍历,依次获取每个表名结果中的每个字段(存储过程)
语句的执行环境是plsql的sql窗口, 语句的目的是从整个数据库中的所有表判断 不等于某个字段的记录数 . 代码如下: declare s_sql clob:=''; -- 声明一个变量,该变量用于 ...
- android--实现通过点击链接打开apk(应用图标在桌面消失)
首先在AndroidManifest.xml的MAIN Activity下追加以下内容.(启动Activity时给予) ※必须添加项 <intent-filter> <action ...
- CANopen 基础
1. TPDO和RPDO都是针对从站来说的,协议上没有有讲任何一个关于主站的概念,协议就只是定义从站,没有定义主站任何东西.TPDO:从站->主站RPDO:主站->从站 2. PDO的CO ...