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

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

Lee__Jungwoo
Beginner
1,919 Views

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 Replies
jimdempseyatthecove
Honored Contributor III
1,919 Views

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

0 Kudos
jimdempseyatthecove
Honored Contributor III
1,919 Views

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

Jim Dempsey

0 Kudos
Lee__Jungwoo
Beginner
1,919 Views

Jim,

Thank you for the comment. 

Jungwoo

0 Kudos
Reply