我经常观察到,未格式化的文件写入(如下所示)比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秒。
为什么会有巨大差异?是否只是在格式化过程中循环所花费的时间?
答案 0 :(得分:1)
请注意,在一个案例中,你首先写整个A,然后整个B然后写整个C.在第二个你写的是A11,B11,C11,A21,B21,C21,......这是一个区别,但是影响会很小。
将二进制内存表示中的数字转换为人类可读数字需要大量的CPU时间。这主要是因为它在格式化的情况下变慢了。此外,文件也较大,因此写入文件需要更多时间。