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) の 2 次元配列です。CPU_Timeこの場合、差は約 12 秒であることがわかりました。

大きな違いがあるのはなぜですか?フォーマットされた手順でループするのにかかる時間ですか?

4

1 に答える 1

1

あるケースでは、最初に A 全体を書き、次に B 全体を書き、次に C 全体を書きました。小さな。

数値をバイナリ メモリ表現から人間が読める数値に変換するには、多くの CPU 時間がかかります。これが、フォーマットされたケースで遅くなる主な原因です。また、ファイルが大きくなるため、書き込みに時間がかかります。

于 2016-11-08T14:18:43.163 に答える