Первую (рекурсивную) версию программы сохраним в файле
gcd-recursive.pl
, вторую (итеративную) — в файле
gcd-iterative.pl
. Испытаем их на вычислении
НОД чисел и
. Для замера времени работы
команды нужно вставить в начало командной строки слово time:
%
time ./gcd-recursive.pl 1 1E6
Deep recursion on subroutine "main::gcd" at ./gcd-recursive.pl line 9. 1 ./gcd-recursive.pl 1 1E6 4,12s user 1,86s system 2% cpu 4:40,99 total
%
time ./gcd-iterative.pl 1 1E6
1 ./gcd-iterative.pl 1 1E6 0,44s user 0,01s system 84% cpu 0,531 total
Первый запуск на нашем не очень производительном компьютере сопровождался скрежетом жёсткого диска. В какой-то момент компьютер перестал слушаться клавиатуру и мышку. Работа программы заняла 281 секунду. Второй запуск прошёл совершенно безболезненно и занял чуть больше полсекунды. Разница во времени в 529 раз! Вот вам и рекурсия…
Примечание | |
---|---|
Результаты измерений при помощи time на ваших компьютерах могут отличаться как от моих результатов, так и друг от друга. Они зависят от производительности компьютера, от его занятости другими программами, от объёма оперативной памяти компьютера и от других факторов. |