2014-01-21 174 views
2

我目前正在研究一個大的fortran 90代碼。大多數模塊都有大量的子程序(> 15)。模塊USE其他模塊在其規格部分,而他們的子程序USE其他模塊在其上。這是它看起來像:`USE`對性能的影響

MODULE OneModule 
USE GlobalConstant 
USE GlobalVariable 

CONTAINS 
    SUBROUTINE Subroutine1() 
    [...] 
    END SUBROUTINE Subroutine1 

    SUBROUTINE Subroutine2() 
    USE Mesh 
    [...] 
    END SUBROUTINE Subroutine2 

    [Other Subroutines] 
END MODULE OneModule 

看到這在每個模塊,我想知道如果這是爲了清晰或優化的緣故。如果模塊OneModule有大量的子程序,如果我們USE模塊MESH在規格部分(如果只有少數這些子程序需要它)會影響​​性能嗎?

回答

7

假如典型的編譯器實現,USE的定位對執行時間有什麼影響,我會被震撼(並且編寫一個bug報告給編譯器供應商)。它可能會對編譯時間產生不重要的影響。

在內部或外部範圍內定位更多的是首選編程風格與標識符可訪問性的程序要求相交叉的問題。 (有一個例外,但這裏沒有關係,F2003爲IEEE浮點支持引入了一組內部的(編譯器提供的)模塊,其中一些模塊的存在可以改變編譯器的代碼產生用於USE範圍內的任何事情)。