Fortran 打印语句性能影响

Fortran Print Statements Performance Effects

我刚刚继承了一些旧的 Fortran 代码,其中到处都有打印语句(当它运行时,矩阵流过)。我知道这些打印语句是无用的,因为我不知道程序在打印什么,因为它运行得如此之快。但是,在 Fortran 程序中使用大量打印语句是否会对性能产生重大影响(即过于冗长的程序是否需要更长的时间来执行)?好像是要执行的另一行,但我不知道它是否重要。

一般来说,是的,I/O 是要执行的 "relatively costly",因为您必须执行诸如格式化数字之类的操作,尤其是浮点数,即使这些过程已经过高度优化。然而,最大的成本之一(在写入缓冲区准备好后实际执行 I/O 的系统调用)在 good compilers/runtimes 中摊销,因为 I/O 语句通常由缓冲默认。这有助于显着减少系统调用的数量,从而减少您的应用程序和 OS.

之间频繁切换上下文所造成的延迟

也就是说,如果您担心性能下降,为什么不尝试注释每个 PRINT 或 WRITE 语句并查看运行时如何变化?或者更好的是,分析您的应用程序并查看在 I/O 和相关例程上花费的时间。