我经常观察到,在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的差异在12s左右。
为什么会有很大的不同?这仅仅是格式化过程中循环所花费的时间吗?
发布于 2016-11-08 14:18:43
注意,在一种情况下,您首先编写了整个A,然后编写了整个B,然后编写了整个C。在第二个例子中,您正在编写A11、B11、C11、A21、B21、C21、.这是不同的,但影响很小。
将数字从二进制内存表示转换为人类可读的数字需要花费大量CPU时间。这主要是使其在格式化情况下更慢的原因。此外,文件更大,因此编写它需要更多的时间。
https://stackoverflow.com/questions/40488891
复制相似问题