C、C++の最適化について語るスレ 3
■ このスレッドは過去ログ倉庫に格納されています
0477デフォルトの名無しさん
2011/09/17(土) 03:56:22.89プログラムでこの部分がかなりの時間をとっているので改善したいと考えています。
#define M 300000
#define N 50000
int XY[M], b[N];
double x[N], y[N], z[N];
for(int i = 0; i < 40000; i++)
{
for( int j = i+1; j < 40000; j++)
{
r = sqrt((x[i]-x[j])*(x[i]-x[j]) +
(y[i]-y[j])*(y[i]-y[j]) +
(z[i]-z[j])*(z[i]-z[j]))+0.5;
XY[r] += b[i]*b[j];
}
}
・x,y,zの有効数字は整数桁まで
・rの最大値は200000程度
・インラインアセンブラやMMXを使用せずに速度を上げたい
インデックスへのアクセスとsqrtの計算の部分がボトルネックのようです。
よろしくお願いします
■ このスレッドは過去ログ倉庫に格納されています