覚書。引用 ChatGPT
話のポイントは何億回も呼ばれる自作配列クラスのoperatorの話です。

質問1.なぜ const size_t& より size_t のほうが速いのか?

あなたの直感「参照のほうがコピーしないから速いのでは?」
→ 普通の型(例えば double やクラス)ならそれ正解です!

でも、size_t はただの unsigned int みたいなもので
「たったの8バイト」です。

ポイント

  • 参照は内部的に「ポインタ」です。

  • つまり、const size_t& r は「rのアドレス」を持ちます。

  • でも size_t r なら、そのまま値(レジスタ)に置ける。

現代CPUでは、

  • 「8バイトの値を渡す」より

  • 「ポインタを渡して間接参照する」ほうが
    ➔ 微妙に遅くなります。(レイテンシが増える)

つまり、
小さい型(int、size_t、ポインタ)は「参照渡し」しない方が速い
でかい型(std::string、構造体)は「const参照渡し」のほうが速い

これが理由です!