当参数按值传递时,为什么std :: move效率最高?

时间:2016-09-28 08:31:28

标签: c++ move move-semantics

我正在进行计算机游戏的蒙特卡罗模拟,基本上如下:

void simulate(Game game)
{
  for (int i = 0; i < some_stuff)
  {
    Game game_copy = game;
    // change copy
    simulate(std::move(game_copy));
  }
}

现在,Game已经满了vector<>个,复制成本非常高。

我发现上述版本在避免复制方面是最快版本,尽管尝试了:

  • 将参数设为Game&const Game&Game&&
  • 使用和不使用std::move
  • 传递参​​数

有人可以向我解释一下吗?我不明白如何将参数类型从pass-by-value更改为pass-by-reference突然重新引入我设法避免的所有复制操作。这里发生了什么?是优化编译器吗?

0 个答案:

没有答案