gpt4 book ai didi

c++ - 在 C++ 中将数组写入文本文件

转载 作者:行者123 更新时间:2023-11-30 02:50:19 26 4
gpt4 key购买 nike

我必须用 C++ 将 5 到 6 个相同大小的大型数组写入文本文件。我只使用一个“for 循环”将所有数组写入文本文件。以下是我正在使用的代码。

ofstream kx_ecl("COARSE_PERMX.GRDECL");
ofstream ky_ecl("COARSE_PERMY.GRDECL");
ofstream kz_ecl("COARSE_PERMZ.GRDECL");
ofstream ntg_c("COARSE_NTG.GRDECL");
ofstream phi_c("COARSE_PORO.GRDECL");
ofstream multbv("MULTBRV.GRDECL");


kx_ecl<<"PERMX"<<endl;
ky_ecl<<"PERMY"<<endl;
kz_ecl<<"PERMZ"<<endl;
ntg_c<<"NTG"<<endl;
phi_c<<"PORO"<<endl;
multbv<<"MULTBRV"<<endl;

for (i=0;i<N;i++) {
kx_ecl<<new_KX[i]<<endl;
ky_ecl<<new_KY[i]<<endl;
kz_ecl<<new_KZ[i]<<endl;
ntg_c<<new_NTG[i]<<endl;
phi_c<<new_por[i]<<endl;
multbv<<MULTBRV[i]<<endl;
}

kx_ecl<<"/";
ky_ecl<<"/";
kz_ecl<<"/";
ntg_c<<"/";
phi_c<<"/";
multbv<<"/";
kx_ecl.close();
ky_ecl.close();
kz_ecl.close();
ntg_c.close();
phi_c.close();
multbv.close();

我的问题是,如果我将它们中的每一个单独输出一个一个,它会更快吗?在这种情况下,它会有很多 for 循环或保持原样。另外,有什么方法可以不使用 for 循环将数组写入文件吗?我问是因为与我的代码中的实际计算相比,输出到文件要花费很多时间。

最佳答案

你知道 std::endl 不断刷新你的 ofstreams 吗?您可以改为推出 '\n' 字符,并在每个流的末尾刷新一次。

I/O 最终可能仍然是您花费的最大时间,但您正在与缓冲作斗争,并且至少在本例中似乎没有从中获得任何好处。由于更好的内存局部性,一次访问一个数组/文件可能会给你带来无限快的性能(除非你使用了太多内存,你正在将页面交换到磁盘),但差异可能会在巨大的成本中完全消失文件写入。

关于c++ - 在 C++ 中将数组写入文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20560759/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com