Короткий ответ
Используйте это для отображения вашего ответа:
write(*,'(A,F12.10,A)')'Elapsed CPU time = ',t2-t1,' seconds.'
Более длинный ответ
Может быть по крайней мере две причины, по которым вы получаете ноль, как предлагается вответы @Ernest Friedman-Hill и @Klas Lindbäck:
- Вычисление занимает менее 0,00005 секунд
- Компилятор оптимизирует весь цикл
В первом случае у вас есть несколько вариантов:
Вы можете отобразить больше цифр t2-t1
, используя формат, как я дал вам выше, или вы можете распечатать результат вмиллисекунды: 1000*(t2-t1)
Добавьте больше итераций: если вы делаете 50000 итераций вместо 5000, это должно занять в десять раз больше времени.
Makeкаждая итерация дольше: вы можете заменить умножение на последовательность сложных операций, возможно, используя математические функции
Во втором случае вы можете:
Отключить оптимизацию, передав соответствующий флагк вашему компилятору (-O0
для gfortran)
Используйте c
где-нибудь в вашей программе после цикла
Я скомпилировал вашу программу с помощьюGfortran 4.2.1 на OS X Lion, и он работал "из коробки" (отображение времени в экспоненциальной записи), и форматирование (короткий ответ) тоже работало нормально.Я попытался включить и отключить оптимизацию, и она тоже работала нормально.
Точность cpu_time
, вероятно, зависит от платформы, поэтому может также объяснять различное поведение на разных машинах, но со всем этим вы сможете решить свою проблему.проблема.