C++ 复制分配运算符与移动分配运算符

C++ 复制分配运算符与移动分配运算符,c++,C++,我只是有一个关于复制赋值运算符和移动赋值运算符的运行时的问题。我希望move assignment操作符运行得更快,但我发现它们的运行速度完全相同(或多或少) 这让我相信我做了一些不正确的事情,或者我在复制不应该复制的数据。如果有人能解释一下,我会很感激的 复制分配运算符(运行时间为1.235s): 这是一个5000x5000二维数组的运行时,该数组使用当前时间作为种子,填充0.00到1.00之间的随机值 我是这样计算时间的: #define TIME(start, end) double((e

我只是有一个关于复制赋值运算符和移动赋值运算符的运行时的问题。我希望move assignment操作符运行得更快,但我发现它们的运行速度完全相同(或多或少)

这让我相信我做了一些不正确的事情,或者我在复制不应该复制的数据。如果有人能解释一下,我会很感激的

复制分配运算符(运行时间为1.235s):

这是一个5000x5000二维数组的运行时,该数组使用当前时间作为种子,填充0.00到1.00之间的随机值

我是这样计算时间的:

#define TIME(start, end) double((end) - (start)) / CLOCKS_PER_SEC

        std::clock_t cs, ce;

        cs = std::clock();
        a = std::move(b);
        ce = std::clock();
        std::cout << "Move Assignment " << TIME(cs, ce) << " seconds";
        std::cout << " - a.check = " << a.check();
        std::cout << " - b.check = " << b.check() << std::endl;
#定义时间(开始、结束)双((结束)-(开始))/CLOCKS_/SEC
标准:时钟,ce;
cs=std::clock();
a=标准::移动(b);
ce=标准::时钟();

你怎么测量?如果操作系统使用1.23s,则0.002s可能会很多。我测量了每个函数运行所需的时间。不过,我预计这一行动会快得多。还是我错了,这就是我不确定的地方。这并没有回答他的问题:你是如何测量的?我希望不是用计时表。此外,张贴来电者代码也可能有用。我张贴了与时钟相关的代码。你能整理一下你的例子吗?创建一个只包含
操作符=
和数据的玩具类,以及以适当大小填充它的方法。然后编写一个测试线束。总共应该有几十行。确认它仍然发生,然后发布该版本?上面有很多未知数,我们也不想要你的整个项目。
w3::DArray2d& w3::DArray2d::operator=(w3::DArray2d::DArray2d&& rhs){

    if(this != &rhs){
          rows = std::move(rhs.rows);
          columns = std::move(rhs.columns);
          array = std::move(rhs.array);

          // reset rhs
          rhs.rows = 0;
          rhs.columns = 0;
          rhs.array = nullptr;
      }
      return *this;

}
#define TIME(start, end) double((end) - (start)) / CLOCKS_PER_SEC

        std::clock_t cs, ce;

        cs = std::clock();
        a = std::move(b);
        ce = std::clock();
        std::cout << "Move Assignment " << TIME(cs, ce) << " seconds";
        std::cout << " - a.check = " << a.check();
        std::cout << " - b.check = " << b.check() << std::endl;