C++11:移动构造函数的测试

代码如下:

#include <iostream>
#include <stddef.h>
#include <Windows.h> using namespace std; class CTest
{
private:
std::size_t size;
char* buffer; public:
CTest(std::size_t size) : size(size), buffer(nullptr)
{
buffer = new char[size];
} ~CTest()
{
delete[] buffer;
} CTest(const CTest& other) : size(other.size), buffer(nullptr)
{
buffer = new char[size];
} CTest(CTest&& other) : size(other.size), buffer(other.buffer)
{
other.buffer = nullptr;
}
}; template <typename Func>
__int64 Benchmark(Func f, size_t count)
{
// LARGE_INTEGER m_liPerfFreq={0};
// //获取每秒多少CPU Performance Tick
// QueryPerformanceFrequency(&m_liPerfFreq);
LARGE_INTEGER li = {};
QueryPerformanceCounter(&li);
__int64 start = li.QuadPart; f(count); QueryPerformanceCounter(&li);
return (li.QuadPart - start);//* 1000 / m_liPerfFreq.QuadPart;
} void Alloc_Ref(size_t count)
{
CTest t();
for(size_t i = ; i < count; ++i)
CTest c(t);
} void Alloc_Move(size_t count)
{
CTest t();
for(size_t i = ; i < count; ++i)
CTest c(std::move(t));
//CTest c(CTest(1024)); } int _tmain(int argc, _TCHAR* argv[])
{
for(int i= ; i< ;++i)
{
cout << "Move: "<< Benchmark(Alloc_Move, ) << " ms." << endl;
cout << "Ref: " << Benchmark(Alloc_Ref, ) << " ms." << endl;
} system("pause");
return ;
}

程序运行结果如下:

结论:可见移动构造函数是拷贝构造函数的1-3倍。

参考链接:

VS 2010, Move constructor only reached after move() and slower than copy constructor?

最新文章

  1. CheckBox复选框全选以及获取值
  2. 多节点ListView的加载效率
  3. 对c语言中malloc和free函数的理解
  4. SQLServer中游标是如何处理数据的?
  5. rsa &amp;&amp; sha1 js code
  6. iterator and iterable
  7. linux下的clock skew detected
  8. Linux信号处理1
  9. 构造数组的MaxTree
  10. vs2012用wpf制作透明窗口中报错的解决方案
  11. Linux 单用户模式的使用
  12. 基于canvas和jsp的头像剪辑上传
  13. JavaScript中的EcMAScript学习笔记
  14. MapReduce实例——求平均值,所得结果无法写出到文件的错误原因及解决方案
  15. WinServer-FTP搭建
  16. 谈谈我对Linux系统学习的历程回顾
  17. lua C++ wrapper
  18. ADO.NET基础知识
  19. Centos6.6下安装nginx1.6.3
  20. 新的方法(Set&lt;T&gt;)实现mvc的crud

热门文章

  1. QDUoj GZS的三角形 棋盘里的数学 思维+杨辉三角
  2. PostgreSQL 务实应用(三/5)分表复制
  3. lightoj1047 【简单线性DP】
  4. Unity 5.4 公开测试版发布:增强的视觉效果,更佳的性能表现
  5. Unity开发MMOARPG游戏解决方案
  6. [Xcode 实际操作]一、博主领进门-(10)Xcode右侧界面介绍
  7. 关于MySQL集群架构优劣势与适用场景的分析与思考
  8. PHP不重新编译,单独添加模块扩展的方法
  9. icekingdom(2018.10.17)
  10. p标签中的文本换行