格式化与未格式化的文件写入

时间:2016-11-08 14:02:32

标签: file-io fortran cpu-time

我经常观察到,未格式化的文件写入(如下所示)比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_Time的差异大约是12秒。

为什么会有巨大差异?是否只是在格式化过程中循环所花费的时间?

1 个答案:

答案 0 :(得分:1)

请注意,在一个案例中,你首先写整个A,然后整个B然后写整个C.在第二个你写的是A11,B11,C11,A21,B21,C21,......这是一个区别,但是影响会很小。

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