0

我经常观察到,在 Fortran 90 中,未格式化的文件写入(如下所示)比格式化文件写入(也如下所示)要快得多。

无格式文件写入

   OPEN ( Unit=86, File='out.dat', Form='unformatted', Action='Write')
   WRITE (86) A, B, C
   CLOSE (86)

格式化文件写入

   OPEN ( Unit=86, File='out.dat', Form='formatted', Action='Write')
   DO ii = 1,N
        DO jj = 1,N
            WRITE (*,86) A(ii,jj), B(ii,jj), C(ii,jj)
        END DO
   END DO
   CLOSE (86)

其中A,B,C是大小为 (N,N) 的二维数组。我发现在这种情况下,差异在CPU_Time12 秒左右。

为什么会有很大的不同?只是循环格式化程序所花费的时间吗?

4

1 回答 1

1

请注意,在一种情况下,您首先编写整个 A,然后是整个 B,然后是整个 C。在第二种情况下,您正在编写 A11,B11,C11,A21,B21,C21,......这是一个区别,但影响将是小的。

将数字从二进制内存表示转换为人类可读的数字需要大量的 CPU 时间。这主要是在格式化的情况下使它变慢的原因。此外,文件较大,因此写入需要更多时间。

于 2016-11-08T14:18:43.163 回答