将大数据保存到文件的最快方法

Luk*_*don 4 c# c++ java numerical-methods

我在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;
}
Run Code Online (Sandbox Code Playgroud)

我认为这是非常快的(我是对的吗:))

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();
}
Run Code Online (Sandbox Code Playgroud)

C#示例类似.

这就是困扰我的事情.我为每一行做了一个String对象(很多垃圾).在这个例子中它并不多,但有时我有10 000 000行.这引出了我的问题:

  1. c ++示例可以更快吗?
  2. 我应该使用StringBuilder for Java还是因为行数而导致它也很糟糕
  3. 还有其他方式或图书馆吗?
  4. C#怎么样?

谢谢

Tha*_*tos 5

简介它.运行代码,计时,看看需要多长时间.如果花费的时间是可以接受的,请使用它.如果没有,弄清楚哪个部分需要花费很长时间才能运行,并对其进行优化.

  • 改正它.
  • 快一点.

那个命令.(有些人在这两个之前添加"make it run/build"......)

也就是说,我之前实际上已经在这类事情上运行指标.缺点:你正在等待磁盘,而磁盘是非常缓慢的.如果您使用C或C++或Java编写它们并不重要,它们都在等待硬盘.

这是我在C中的各种I/O方法上做的上一篇文章.不完全是您正在寻找的,但可能是提供信息的.