ETIME (The GNU Fortran Compiler)

### 8.105 `ETIME` — Execution time subroutine (or function) ¶

Synopsis:

  `CALL ETIME(VALUES, TIME)`.
  `TIME = ETIME(VALUES)`, (not recommended).

Description:

  `ETIME(VALUES, TIME)` returns the number of seconds of runtime since the start of the process’s execution in TIME. VALUES returns the user and system components of this time in `VALUES(1)` and `VALUES(2)` respectively. TIME is equal to `VALUES(1) + VALUES(2)`.

  On some systems, the underlying timings are represented using types with sufficiently small limits that overflows (wrap around) are possible, such as 32-bit types. Therefore, the values returned by this intrinsic might be, or become, negative, or numerically less than previous values, during a single run of the compiled program.

  This intrinsic is provided in both subroutine and function forms; however, only one form can be used in any given program unit.

  VALUES and TIME are `INTENT(OUT)` and provide the following:

  `VALUES(1)`: | User time in seconds.
  `VALUES(2)`: | System time in seconds.
  `TIME`: | Run time since start in seconds.

Class:

  Subroutine, function

Arguments:

  VALUES | The type shall be `REAL(4), DIMENSION(2)`.
  TIME | The type shall be `REAL(4)`.

Return value:

  Elapsed time in seconds since the start of program execution.

Example:

      program test_etime
          integer(8) :: i, j
          real, dimension(2) :: tarray
          real :: result
          call ETIME(tarray, result)
          print *, result
          print *, tarray(1)
          print *, tarray(2)
          do i=1,100000000    ! Just a delay
              j = i * i - i
          end do
          call ETIME(tarray, result)
          print *, result
          print *, tarray(1)
          print *, tarray(2)
      end program test_etime

Standard:

  GNU extension

See also:

  `CPU_TIME` — CPU elapsed time in seconds