我在Java,C#和C++中进行了一些数值计算。其中一些存储了大量数据(到文本文件)。什么是最快的方法呢?将大型数据保存到文件的最快方法
C++。
ofstream file;
file.open(plik);
for(int i=0;i<251;i++){
for(int j=0;j<81;j++)
file<<(i-100)*0.01<<" "<<(j-40)*0.01<<" "<<U[i][j]<<endl;
file<<endl;
}
我以为是非常快的(是吗?:))
的Java
void SaveOutput(double[][] U, String fileName) throws IOException
{
PrintWriter tx = new PrintWriter(new FileWriter(fileName));
for(int i=0;i<251;i++)
{
for(int j=0;j<81;j++)
{
tx.println(String.format("%e %e %e ",(i - 100) * dz, (j - 40) * dz, U[i][j]));
}
tx.println();
}
tx.close();
}
C#的例子是类似的。
这是什么让我困扰。我为每一行创建一个String对象(很多垃圾)。在这个例子中,它并不多,但有时候我有1000万行。这引出了我的问题:
- c + +示例可以更快吗?
- 我是否应该使用StringBuilder for Java或者它也可能由于行数差而不好
- 还有其他方法或库吗?
- C#呢?
谢谢
只是一个快速提示,使用''n''而不是'endl',因为'endl'强制每一行刷新数据流 – Inverse 2010-11-05 00:23:28
它是否必须是文本文件?以二进制形式保存可能会显着加快速度。你在运行什么操作系统?可能有操作系统特定的功能(例如Windows中重叠的I/O)可以加快速度。 – 2010-11-05 00:52:44
你必须是。我使用gnuplot,需要查看文件等。 – 2010-11-05 00:58:48