Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
28808 Discusiones

Is it better to use "use only" when using module?

Lee__Jungwoo
Principiante
1.824 Vistas

In my fortran program, there are hundreds of global variables, and they are all stored in a single module file. Then, I also have ~50 subroutines, each of which uses only some of the global variables. In this case, is there any compiling or simulation speed difference between (1) using "only" to select some of the global variables in each subroutine and (2) just using all global variables in every subroutine.

 For example:

If I have a module file:
   module mod_global
   ...
   real :: num1, num2, num3, ..., num1000
   ...
   end module

First approach:
   subroutine_1
   use mod_global, only : num1, num2, num3, ..., num100
   ...
   end subroutine_1

   subroutine_2
   use mod_global, only : num101, ..., num200
   ...
   end subroutine_2 

Second approach:  
   subroutine_1
   use mod_global
   ...
   end subroutine_1

   subroutine_2
   use mod_global
   ...
   end subroutine_2 

I know that it is better to control (manage) if I use "use, only" combination. However, I want to know whether there is a speed difference (both in compilation and execution) between the two approaches.

 

0 kudos
3 Respuestas
jimdempseyatthecove
Colaborador Distinguido III
1.824 Vistas

A problem with .NOT. using ONLY is that it may thwart your intentions of what is to happen with IMPLICIT NONE. IOW a misappropriated variable declared in the module may get used for an otherwise (intended) undefined variable. I.e. you may have a hidden error in your program.

Jim Dempsey

jimdempseyatthecove
Colaborador Distinguido III
1.824 Vistas

There no speed difference, it merely enforces the intent of you explicitly declaring variables (and enabling IMPLICIT NONE to catch those errors).

Jim Dempsey

Lee__Jungwoo
Principiante
1.824 Vistas

Jim,

Thank you for the comment. 

Jungwoo

Responder