私は電気工学の学生です。
割り当てとして、医療画像処理で使用される逆投影アルゴリズムを実装して画像を形成する必要があります。最終的な画像を計算するために、多くの情報が計算され、ベクトルに保持されます。最終イメージの特定の解像度 (256*256 ピクセル) では、RAM が不足するとプログラムがクラッシュするため、この情報を 90 個のテキスト ファイルに書き込むことにしました。
これらのファイルの書き込みには ofstream を使用します。
この情報を計算してからベクトルに格納するのに必要な時間は次のとおりです。
- 出力解像度 64x64 : 13,4s
- 出力解像度 128x128 : 140s
この情報を .txt ファイルに書き込む:
- 64x64 156s (1.25 MB/ファイル)
- 128x128 1400s (5MB/ファイル)
ファイルへのコード書き込み:
ofstream file;
for(k = 0; k < 90; k++)
{
oss.str(""); //string stream
oss << "rec\\reconstruction_matrix_step"<< k << ".txt" ; // per step other file
filename = path;
filename.append(oss.str());
file.open(filename.c_str());
double weight;
for( l = 0; l < resolution; l ++)
{
bestand << "Begin " << l << endl;
l_border = - WIDTH*(resolution*1.0/2.0 - l);
r_border = - WIDTH*(resolution*1.0/2.0 - l) + WIDTH;
for(i = 0; i < resolution; i++)
{
for(j = 0; j < resolution; j++)
{
file << getSurface(pixels[i][j], l_border, r_border) << "\t";
}
file << "\n";
}
file << "End" << l << "\n\n\n";
}
file.close();
}
ベクターを使用すると、getSurface(pixels[i][j], l_border, r_border) がファイルに書き込まれる代わりにベクターに入れられます。
このプロセスをスピードアップする方法はありますか?