我经常观察到,在 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 秒左右。
为什么会有很大的不同?只是循环格式化程序所花费的时间吗?