遅そうなプログラムの最適化でもしようかねぇ.とりあえずシーケンシャル部分から書き換え.無駄に配列使わず上書きで行く.次は通信をまとめてみようか?
配列2本を使う:
for(int i = 1; i <= Len; i++)
V[i] = (1 - MU) * U[i] + MU * U[i - 1];
double *tmp = U; U = V; V = tmp;
こんなものは一本で十分:
register double *u = U;
register double pu = *u++;
for(double const *e = u+Len; u != e; u++){
register double cu = *u;
*u = (1 - MU) * cu + MU * pu;
pu = cu;
}
これで一回のスッテプでのメモリアクセスが一箇所になった.良し.
- Newer: AWK - はじめ