title: C++, const reference is actually faster than move?
body: <p>After testing this code: </p>
  
  <pre><code>#include &lt;iostream&gt;
  #include &lt;chrono&gt;
  #include &lt;vector&gt;
  #include &lt;string&gt;
  
  
  void x(std::vector&lt;std::string&gt;&amp;&amp; v){ }
  
  void y(const std::vector&lt;std::string&gt;&amp; v) { }
  
  int main() {
      std::vector&lt;std::string&gt; v = {};
  
      auto tp = std::chrono::high_resolution_clock::now();
  
      for (int i = 0; i &lt; 1000000000; ++i)
          x(std::move(v));
  
      auto t2 = std::chrono::high_resolution_clock::now();
  
      auto time = std::chrono::duration_cast&lt;std::chrono::duration&lt;double&gt;&gt;(t2 - tp);
  
      std::cout &lt;&lt; "1- It took: "  &lt;&lt; time.count() &lt;&lt; " seconds\n";
  
      tp = std::chrono::high_resolution_clock::now();
  
      for (int i = 0; i &lt; 1000000000; ++i)
          y(v);
  
      t2 = std::chrono::high_resolution_clock::now();
  
      time = std::chrono::duration_cast&lt;std::chrono::duration&lt;double&gt;&gt;(t2 - tp);
  
      std::cout &lt;&lt; "2- It took: " &lt;&lt; time.count() &lt;&lt; " seconds\n";
  
      std::cin.get();
  }
  </code></pre>
  
  <p>I get that using const-reference is actually ~15s faster than using move semantics, why is that? I thought that move semantics were faster, else, why would they add them? What did I get wrong about move semantics? thanks</p>