2

我有一个用 Fortran 90 编写的库,以及几个使用它的 C 和 C++ 应用程序。早些时候,我使用 MinGW GCC 4.4.0(它是我从我从 mingw.org 下载的几个二进制档案中组成的)来编译它们。

今天我下载了最新的 MinGW(GCC 4.7.0,网络安装)并重建了我所有的代码。令人惊讶的是,应用程序开始运行非常缓慢 - 大约慢了 30 倍或更多。同时,重新编译的版本和从备份中恢复的工作相似 - 似乎问题出在 gfortran DLL 上,它取自 PATH(即新的 MinGW,与应用程序版本无关)。

什么可能是问题的根源,以及如何解决?我暂时回到了旧的 MinGW。

4

1 回答 1

0

回到这个问题后,我成功地找到了解决方法(但不是原因)。

在我的程序中,从 C 端的多个线程调用了一些计算广泛的 fortran 子例程。出于某种原因,在 mingw-gfortran 4.6.2 或 4.7.0 上,这 会使程序减慢15 倍,而在 4.4.0 上则更快。如果仅从一个线程调用子程序,则 4.7.0 在速度方面等于 4.4.0。

目前速度对我来说已经足够了,我将调用者环境限制为 1 个线程。

于 2012-08-08T09:39:52.563 回答