Fortran选择格式以增强代码执行时间

时间:2017-12-07 07:29:49

标签: fortran fortran77

我有一个代码,它以三个值的数组开头,这些值在代码的开头初始化。对于不同的运行,我必须进入代码以对这些初始值进行显式更改。 由于这非常令人沮丧和耗时,我决定修改代码,使代码从文本文件中读取初始值。

虽然我成功地进行了更改,但现在代码运行速度要慢得多(至少20倍)。

当我在代码中显式初始化数组时,数组看起来像

array1 = {0.001,0.002,0.034,...} array2 = {42D4,36D4,72D4,10D5,...}。

我尝试使用

从文本文件中读取这些数组值

格式(E8.2)或格式(D8.2)或格式(F8.2)。

我猜我使用这些格式从文件中读取值的方式与代码速度的大幅降低有关吗?

这是真的吗?如果没有,我需要做什么? 如果是,我应该如何修改格式,以便我的代码以与以前类似的速度运行?

1 个答案:

答案 0 :(得分:2)

如果读取占用代码中运行时的很大一部分,那么很难说。我们无法知道,因为我们无法看到代码。但如果是,那么:

如前所述,很多次,你不会用文本文件获得良好的性能。您为阅读设置的格式无关紧要,运行时库必须进行大量处理才能将字符串转换为计算机内存中的数字。

显着加快I / O操作速度的方法是使用未格式化的(二进制)数据文件。

值得注意的是,您尝试的格式

Format(E8.2)
Format(D8.2)
Format(F8.2)
输入的

全部完全等效。不仅是他们的速度。它们的意思是输入完全相同。