memmove 对同一个指针不操作

memmove 对同一个指针不操作,所以调用memmove之前不用比较两个指针是否相同

 

void CTestDLLDlg::OnBnClickedButton6()
{const int size = 999999;char* data = new char[size];memset(data, 1, size - 1);char* data1 = new char[size];memset(data1, 'a', size - 1);clock_t begin = clock();for (int i = 0; i < size; ++i){memmove(data1, data, size);}clock_t end = clock();double duration = 0;duration = (double)(end - begin) / CLOCKS_PER_SEC;CString str = _T("");str.Format(_T("-不同指针复制- %f---\n"), duration);OutputDebugString(str);clock_t begin1 = clock();for (int i = 0; i < size; ++i){memmove(data1, data1, size);}clock_t end1 = clock();double duration1 = 0;duration1 = (double)(end1 - begin1) / CLOCKS_PER_SEC;CString str1 = _T("");str1.Format(_T("-同指针复制- %f---\n"), duration1);OutputDebugString(str1);clock_t begin2 = clock();for (int i = 0; i < size; ++i){}clock_t end2 = clock();double duration2 = 0;duration2 = (double)(end1 - begin1) / CLOCKS_PER_SEC;CString str2 = _T("");str2.Format(_T("-空循环- %f---\n"), duration2);OutputDebugString(str2);delete data;data = nullptr;delete data1;data1 = nullptr;}

显示结果是:

 

 

-不同指针复制- 49.971000---
-同指针复制- 38.833000---
-空循环- 38.833000---

将memmove换成memcpy,显示

-不同指针复制- 49.782000---
-同指针复制- 38.847000---
-空循环- 38.847000---

 

没觉得memcpy有多快

 

转载于:https://www.cnblogs.com/XiHua/p/5077728.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/458520.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.Net JIT

.Net JIT(转) JIT 转载于:https://www.cnblogs.com/HelloMyWorld/p/5501135.html

Hadoop HDFS概念学习系列之HDFS升级和回滚机制(十二)

不多说&#xff0c;直接上干货&#xff01; HDFS升级和回滚机制 作为一个大型的分布式系统&#xff0c;Hadoop内部实现了一套升级机制&#xff0c;当在一个集群上升级Hadoop时&#xff0c;像其他的软件升级一样&#xff0c;可能会有新的bug或一些会影响现有应用的非兼容性变更出…

TCP协议的特性

TCP协议的特性&#xff1a;建立连接&#xff1a;三次握手将数据打包成段&#xff1a;校验和&#xff08;CRC32&#xff09;确认、重传及超时排序&#xff1a;逻辑序号流量控制&#xff1a;滑动窗口算法拥塞控制&#xff1a;慢启动和拥塞便面算法转载于:https://blog.51cto.com/…

属性动画基础之ValueAnimator

概述 属性动画是谷歌在android3.0&#xff08;API level 11&#xff09;时候给我们带来了属性动画&#xff0c;真正意义上带来了”动画“&#xff0c;以前的帧动画也就4中效果的组合&#xff08;旋转、淡入淡出、放大缩小、平移&#xff09;&#xff0c;而且只是表面的动画&…

经验之谈:10位顶级PHP大师的开发原则

导读&#xff1a;在Web开发世界里&#xff0c;PHP是最流行的语言之一&#xff0c;从PHP里&#xff0c;你能够很容易的找到你所需的脚本&#xff0c;遗憾的是&#xff0c;很少人会去用“最佳做法”去写一个PHP程序。这里&#xff0c;我们向大家介绍PHP的10种最佳实践&#xff0c…

#Pragma Pack(n)与内存分配 pragma pack(push,1)与#pragma pack(1)的区别

from&#xff1a;http://blog.csdn.net/mylinx/article/details/7007309 #pragma pack(n) 解释一&#xff1a; 每个特定平台上的编译器都有自己的默认“对齐系数”(也叫对齐模数)。程序员可以通过预编译命令#pragma pack(n)&#xff0c;n1,2,4,8,16来改变这一系数&#xff0c;…

ShowDoc的搭建

其实&#xff0c;官方文档也说的很清楚了。主要贴一下我遇见的问题。环境&#xff1a;LNMP&#xff08;LAMP没试过&#xff0c;有兴趣的同学可以试试&#xff0c;然后发出来&#xff09;PHP5.3以上版本、php-mbstring模块、php-pdo模块、mysql数据库克隆或者下载代码&#xff1…

BroadcastReceiver

本文介绍Broadcast Receiver&#xff0c;包括几部分内容&#xff1a;Broadcast Receiver概述及实例、自定义Broadcast Receiver、Broadcast Receiver的实现细节、生命周期等。 csdn貌似今天出问题了&#xff0c;无法上传图片。 资料来源&#xff1a;最牛网&#xff0c;《官方解…

如何确定VS编译器版本--_MSC_VER || #if _MSC_VER 1000 #pragma once #endif

如何确定VS编译器版本 _MSC_VER是MSVC编译器的内置宏&#xff0c;定义了编译器的版本&#xff0c;_MSC_VER 值对应版本关系 MSVC 11.0 _MSC_VER 1700 (Visual Studio 2012) MSVC 10.0 _MSC_VER 1600 (Visual Studio 2010) MSVC 9.0 _MSC_VER 1500 (Visual Studio 2008) …

NIO复习02

Selector 1. Selector&#xff08;选择器&#xff09;是Java NIO中能够检测一到多个NIO通道&#xff0c;并能够知晓通道是否为诸如读写事件做好准备的组件。这样&#xff0c;一个单独的线程可以管理多个channel&#xff0c;从而管理多个网络连接。 2. Selector的创建&#xff1…

c/c++标准预定义宏

C标准中的一些预定义宏昨天写代码时需要在代码获取当前编译时间&#xff0c;从而可动态地作为版本信息&#xff0c;因此用到了C标准中的一些预定义的宏。在此将C标准中定义的几个宏一并总结一下&#xff1a; __DATE__ 进行预处理的日期&#xff08;“Mmm dd yyyy”形式的字符串…

安装cocoa pods时出现Operation not permitted - /usr/bin/xcodeproj的问题

在更新完ruby&#xff0c;更换Ruby镜像&#xff0d;&#xff0d;淘宝的那个镜像(https://ruby.taobao.org/ )已经不可用了。官方的需要FQ。所以我们现在用最新支持的ruby镜像(https://gems.ruby-china.org/) 安装cocoa pods时&#xff0c; 在命令行中输入&#xff1a; 安装&…

js 日期控件laydate使用

官网 http://sentsin.com/layui/laydate/ 1. 下载官网上的压缩包,解压后只需要复制laydate 文件夹到你的项目中; 2. 在页面引入 <script type"text/javascript" src"js/laydate/laydate.js"></script> 3. 在页面添加: <div class"i…

老李推荐:第8章2节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-解析处理命令行参数 2...

我们这一节会先去分析下monkeyrunner是如何对参数进行处理的&#xff0c;我们跳转到MonkeyRunnerOptions这个类里面的processOptions这个方法&#xff1a; 93 public static MonkeyRunnerOptions processOptions(String[] args) 94 { 95 int index 0; 96 97 Strin…

MFC CPropertySheet 多页面切换 实例

为了能实现在同一个页面实现多个页面的切换效果。CPropertySheet要与CPropertyPage一起使用。 首先 新建一个MFC工程--MFC AppWizard(exe), 取名Pagesheet, 选择Dialog based, 然后Finish. 2. 在对话框资源中插入两个对话框IDD_DIALOG1、IDD_DIALOG2&#xff0c;作为…

ReactiveCocoa简单介绍

ReactiveCocoa 的简单介绍 http://www.jianshu.com/p/87ef6720a096

游戏提高性能 游戏降帧处理

什么是降帧&为什么降帧 一般情况下我们为了提高整个游戏的体验&#xff0c;所以我们一般会将游戏的帧数&#xff08;每秒钟刷新多少次&#xff09;设置的比较高。一般情况下&#xff0c;我们的游戏所有的代码都是一帧执行一次。为了让每一帧都变成真的关键数据帧。不过&…