Arrays 用Fortran编写数据的最精确、最有效的方法

Arrays 用Fortran编写数据的最精确、最有效的方法,arrays,file-io,fortran,gfortran,file-writing,Arrays,File Io,Fortran,Gfortran,File Writing,假设我有一个程序,在每次迭代时,I输出一些数据,a,b,c 就速度和精度而言,将此数据写入文件的最佳方式是什么?将数据写入文件的Fortran标准方法/最佳实践是什么 我目前的考虑是: 将所有数据写入数组,然后将此数组写入文件 逐行写入未格式化的二进制文件 逐行写入文本文件 我知道先写入数组,然后再写入文件会更快,但每种情况下的精度如何?如果我不知道I的值,因此无法最初定义数组大小,那该怎么办?逐行写入未格式化的二进制文件。未格式化文件中没有行。但是,是的,二进制文件将是最好的。但是你应该说

假设我有一个程序,在每次迭代时,
I
输出一些数据,
a,b,c

就速度和精度而言,将此数据写入文件的最佳方式是什么?将数据写入文件的Fortran标准方法/最佳实践是什么

我目前的考虑是:

  • 将所有数据写入数组,然后将此数组写入文件
  • 逐行写入未格式化的二进制文件
  • 逐行写入文本文件

我知道先写入数组,然后再写入文件会更快,但每种情况下的精度如何?如果我不知道I的值,因此无法最初定义数组大小,那该怎么办?

逐行写入未格式化的二进制文件。未格式化文件中没有行。但是,是的,二进制文件将是最好的。但是你应该说明一些选择的标准,否则它实际上是基于意见的。你所说的精确性是什么意思?写入和后续读取期间的舍入精度损失?在未格式化(二进制)I/O期间不会发生这种情况。是否所有时间步都需要一个输出文件?我并没有真正让您写入数组。你的意思是在整个计算过程中填充一个数组,然后在最后立即写入?这听起来很有问题。这是可行的,但会浪费内存,需要不时地重新分配。另外,像NetCDF或HDF5这样的外部库呢?你会考虑它们吗?一行一行地写入非格式化的二进制文件。未格式化文件中没有行。但是,是的,二进制文件将是最好的。但是你应该说明一些选择的标准,否则它实际上是基于意见的。你所说的精确性是什么意思?写入和后续读取期间的舍入精度损失?在未格式化(二进制)I/O期间不会发生这种情况。是否所有时间步都需要一个输出文件?我并没有真正让您写入数组。你的意思是在整个计算过程中填充一个数组,然后在最后立即写入?这听起来很有问题。这是可行的,但会浪费内存,需要不时地重新分配。另外,像NetCDF或HDF5这样的外部库呢?你考虑他们吗?