我是电气工程专业的学生。
作为一项任务,我需要实现医学成像中使用的反投影算法以形成图像。为了计算最终图像,需要计算大量信息并将其保存在向量中。在最终图像的某个所需分辨率(256*256 像素)下,程序在我用完 RAM 时崩溃,所以我决定将此信息写入 90 个文本文件。
我使用 ofstream 来编写这些文件。
计算此信息并将其存储在向量中所需的时间为:
- 输出分辨率 64x64 : 13,4s
- 输出分辨率 128x128 : 140s
将此信息写入 .txt 文件:
- 64x64 156 秒(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) 被放入矢量而不是写入文件中。
有什么办法可以加快这个过程吗?