C++11:移动构造函数的测试
2024-08-30 07:34:21
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?
最新文章
- CheckBox复选框全选以及获取值
- 多节点ListView的加载效率
- 对c语言中malloc和free函数的理解
- SQLServer中游标是如何处理数据的?
- rsa &;&; sha1 js code
- iterator and iterable
- linux下的clock skew detected
- Linux信号处理1
- 构造数组的MaxTree
- vs2012用wpf制作透明窗口中报错的解决方案
- Linux 单用户模式的使用
- 基于canvas和jsp的头像剪辑上传
- JavaScript中的EcMAScript学习笔记
- MapReduce实例——求平均值,所得结果无法写出到文件的错误原因及解决方案
- WinServer-FTP搭建
- 谈谈我对Linux系统学习的历程回顾
- lua C++ wrapper
- ADO.NET基础知识
- Centos6.6下安装nginx1.6.3
- 新的方法(Set<;T>;)实现mvc的crud
热门文章
- QDUoj GZS的三角形 棋盘里的数学 思维+杨辉三角
- PostgreSQL 务实应用(三/5)分表复制
- lightoj1047 【简单线性DP】
- Unity 5.4 公开测试版发布:增强的视觉效果,更佳的性能表现
- Unity开发MMOARPG游戏解决方案
- [Xcode 实际操作]一、博主领进门-(10)Xcode右侧界面介绍
- 关于MySQL集群架构优劣势与适用场景的分析与思考
- PHP不重新编译,单独添加模块扩展的方法
- icekingdom(2018.10.17)
- p标签中的文本换行