title: When is sizeof(myPOD) too big for pass by value on x64?
body: <p>I expect no difference when it comes to structures that are up to 8 bytes in size, but what about bigger POD types? Does pass by value become more expensive the moment the type's size exceeds machine word size or is there something else (like cache line size) that can affect the performance?</p>
  
  <p>I'm mainly interested in x64, but feel free to include some numbers for x86 as well.</p>
  
  <p>Clarifications:</p>
  
  <ul>
  <li>I'm probably thinking too narrowly because I'm not aware of everything that plays a role in this (registers, calling conventions, compiler optimizations). I'm mainly interested in Microsoft's C++ compiler and it only uses __fastcall.</li>
  <li>I'm interested if there is any kind of general recommendation when it comes to parameter passing knowing the architecture, type size, cache size, etc. Something like: "Prefer passing the type by value when it's smaller than N bytes." where N is something that can be derived from the things we know.</li>
  </ul>