void foo(Node* p[], int size){
_uint64 arr_of_values[_MAX_THREADS];
for (int i=0 ; i < size ; i++ ){
arr_of_values[i] = p[i]->....;
// much code here
//
}
}
対
void foo(Node* p[], int size){
_uint64 arr_of_values[_MAX_THREADS];
Node* p_end = p[size];
for ( ; p != p_end ; ){
arr_of_values[i] = (*p)->.....;
p++;
// much code here
//
}
}
私が求めていることを示すために、この関数を作成しました:
キャッシュ効率の観点からは、どちらがより効率的ですか: p[i] を使用するか、*p++ を使用しますか?
(残りのコードでは決して p[ix] を使用しませんが、次の計算では p[i] または *p を使用する場合があります)