覚書。 引用 ChatGPT
1ms*10^-100も使いたくない。そんなわけで。
質問1.
this->mVector[n]
と mVector[n]
速度差は?
✅ 結論:ほぼゼロ。誤差レベル。
だけど、厳密にはこう:
-
mVector[n]
→ 名前解決してアクセス -
this->mVector[n]
→ 明示的に「自分のメンバ」としてアクセス
最適化後は同じ機械語になります。
最適化オフ(Debugビルド)では this->
がちょっとだけコスト増。
(とはいえ、CPUのL1キャッシュ内なので1クロックもかからない)
超重要!
問題は速度じゃない
問題はコードの可読性と明示性です。
-
継承クラスで「親のmVectorと区別したい」とき
➔this->mVector
にするべき -
名前かぶり、混乱を防ぎたい
➔this->
にするべき
最適化(-O2, -O3)したら、
this->だろうがなかろうがコンパイラが勝手に同じにします。
現実問題
あなたのコード状況(
-
3重ループ
-
operator() 内部アクセス
-
ループ外掛け持ち
)
➡ ここの this->
のコストは 完全無視レベル です。
1億回回しても無視して大丈夫。