Um problema de sincronização fortran que não consigo entender

Escrevi (para minha aula de Métodos Numéricos para Física Teórica) um programa muito simples para uma Caminhada Aleatória na dimensão 2. Aqui está:

program random_walk

implicit none

integer, parameter :: Nwalker = 1000000
integer, parameter :: Nstep   = 100
integer, parameter :: Nmeas   = 10

integer :: posx, posy, move

integer :: is, im, iw
real    :: start_time, stop_time

double precision, dimension(Nmeas) :: dist, r2
real :: rnd

do im = 1, Nmeas
    dist(im) = im*Nstep
    r2(im)   = 0.0
end do

call cpu_time(start_time)
do iw = 1, Nwalker
    posx = 0
    posy = 0
    do im = 1, Nmeas
        do is = 1, Nstep
            call random_number(rnd)
            move = 4*rnd
            if (move == 0) posx = posx + 1
            if (move == 1) posy = posy + 1
            if (move == 2) posx = posx - 1
            if (move == 3) posy = posy - 1
        end do
        r2(im) = r2(im) + posx**2 + posy**2
    end do
end do
r2 = r2 / Nwalker
call cpu_time(stop_time)
do im = 1, Nmeas
    print '(f8.6, "   ", f8.6)', log(dist(im)), log(r2(im))
end do
print '("Time = ", f6.3, " seconds")', stop_time - start_time
end program

No final, ele deve imprimir 10 linhas e 2 colunas: a primeira coluna é o logaritmo de "tempo" (número de etapas), a segunda coluna é o logaritmo da distância quadrática média da origem. A segunda coluna "em média" deve ser igual à primeira. Até agora tudo bem, o programa está funcionando bem, os resultados são muito razoáveis. Mas aqui está o problema; no meu macbookpro (Intel Core i7 a 2,7 GHz, compilador gfortran 7.1.0, otimização -O2), leva em média mais de 20 segundos para ser executado. Mas se eu comentar essas linhas:

! do im = 1, Nmeas
!    print '(f8.6, "   ", f8.6)', log(dist(im)), log(r2(im))
! end do

que estão além da computação "stop_time", o resultado é que o tempo de execução é ... inferior a 6 segundos !?

Como isso é possível?

questionAnswers(1)

yourAnswerToTheQuestion