私は 3D シミュレーション用のコードを書いているので、コードは次のような内容でいっぱいです。
関数を使用するとオーバーヘッドが発生する可能性がありますか? なぜ?
「a」は 3D ポインターです。
アップデート
関数の定義
double update_a(double a[][JE][KE],...)
{
for(i=1;i<IE;i++){
for(j=1;j<JE;j++){
for(k=1;k<KE;k++){
curl_h=(hz[i][j][k]-hz[i][j-1][k]-hy[i][j][k]+hy[i][j][k-1]);
idxl[i][j][k]=idxl[i][j][k]+curl_h;
a[i][j][k]=gj3[j]*gk3[k]*dx[i][j][k]+gj2[j]*gk2[k]*.5*(curl_h+gi1[i]*idxl[i][j][k]);
}}}
IE=JE=KE=200
どちらの方がよいですか :
int main()
{
update_a(...)}
また
int main(){
for (i=0; i<200; i++) {
for (j=0; j<200; j++) {
for (k=0; k<200; k++) {
curl_h=(hx[i][j][k]-hx[i][j][k-1]-hz[i][j][k]+hz[i-1][j][k]);
idyl[i][j][k]=idyl[i][j][k]+curl_h;
a[i][j][k]=gi3[i]*gk3[k]*ey[i][j][k]+gi2[i]*gk2[k]*0.5*(curl_h+gj1[j]*idyl[i][j][k]);
}
}
}
}
更新2:
私の正確なコードは次のようになります。
int main()
{
for(n=1;n<100000;n++){
update_a(...);
update_a2(...);
.
.
.
update_a30(...);}}