たとえば、ポインタのベクトルをループして複数のオブジェクトをチェックし、それらに対して操作を実行しているとします。私は次のいずれかを行うことができました。
方法 1:
std::vector< Object* >::iterator it;
Object* o;
for (it = objects.begin(); it != objects.end(); ++it)
{
o = (*it)
if(o->GetActive())
{
o->method;
o->method2;
o->method3;
//etc...
}
}
方法 2:
std::vector< Object* >::iterator it;
for (it = objects.begin(); it != objects.end(); ++it)
{
if((*it)->GetActive())
{
(*it)->method;
(*it)->method2;
(*it)->method3;
//etc...
}
}
私が見ることができることから、特に次のようなことをしている場合、構文を逆参照すると読みやすさが複雑になることが多いため、方法1の方が読みやすくなっています。
if((*o)->CheckValue((*c)))
ただし、ローカル変数を作成すると、読みやすくなります。
if(o->CheckValue(c))
しかし、メモリ コストを増加させる余分な変数を作成していますよね?
パフォーマンスの違いは何ですか?