Depends on the hardware. Depends on the access pattern inside the function. (For example, if all the function does it pass the thing on to other functions, this favors references.) Depends on the code the compiler generates. (Under heavy register pressure, the compiler might not be able to hold even an often-accessed part of the structure in a register, thus requiring more loads, which take longer for pass-by-ref.) But if I were to guess (but please note, this is really a pure guess), I'd say at about 4 times the machine word size passing a reference becomes more efficient. Of course, that depends also on the complexity of the copy constructor. Your average std::vector is 3 pointers large, but pass-by-ref is definitely more efficient.