|
[Fortran] 纯文本查看 复制代码 ! Case [A]
READ(55,*) (Fxm(i,1), Fxm(i,2) , i=1,10001)
! Case [B]
DO i = 10001
READ(55,*) Fxm(i,1), Fxm(i,2)
END DO
! Case [C]
DO i = 10001
READ(55,*) tmp, Fxm(i,1), tmp, Fxm(i,2)
END DO
0. Fortran Standard, Default, 每做完一次 READ/WRITE, 就會自動 New Line, 除非是 Formatted Format 且有 ADVANCE='NO' 控制
1. Case [A]: 一次讀入 連續10001*2個 REALs (目前line到底了自動newline, READ做完後newline): 不論 (1, and/or , 2, and/or, 5, and/or, 10, ...)個REALs per line
Case [B]: 一次讀2個 REALs (READ做完後newline), Loop 10001回: 如果不是嚴謹的2 REALs pe line, 至少有10001 lines, 就 掰掰了
Case [C]: DataFile : >=4 REALs per line, 只想要 第2 及 第4 個REALs
2. DataFile如果是完美的 10001 lines, 2 REALs per line: Cases[A] ==Case[B], Case[B]可以的Case[A]一定可以
Case[A]OK, Case[B] Fail, 就表示 DataFile不是完美的 10001 lines, 2 REALs per line, ---> [#7]
3. SAVE/只讀一次 很好的coding , or, Case[A] only one READ, Case[B] 10001回READ, 其效率的差異是感受不到的
(a) 資料量太少了, 0.001秒與0.01秒的感受
(b) I/O一次 開門關門一次 是很耗時的, 當然編譯器會 很有效率地去做 白紙黑字Case[B]所要求的
4. 總結一下: 不是 Re-Open, 子程序裡SAVE有其功能, DataFile不是完美的 10001 lines, 2 REALs per line? |
|