3482
правки
Изменения
м
→Функция system.time
Самый простой инструмент для измерения времени выполнения кода - функция <code>system.time()</code> из пакета <code>base</code>. В качестве аргумента функция <code>system.time()</code> принимает выражения и возвращает время выполнения данного выражения. Измерим время выполнения функции <code>Sys.sleep()</code>, которая останавливает выполнение кода на заданный интервал времени (в секундах):
{{r-code|code=<nowiki>> system.time(Sys.sleep(1))
пользователь система прошло
0.003 0.004 1.000
Приведём ещё один пример. Сравним время вычисления встроенной в R функции <code>mean()</code> и среднего, вычисленного по формуле <math>\frac{1}{n}\sum_{i=1}^{n}x_{i}</math>. на сгенерированном массиве нормально распределенных значений:
{{r-code|code=<nowiki>> x <- rnorm(10^7L)
> system.time(mean(x))
пользователь система прошло
Проиллюстрируем вышесказанное на примере:
{{r-code|code=<nowiki>> replicate(10, system.time(mean(x))[["elapsed"]])
[1] 0.024 0.020 0.019 0.018 0.017 0.016 0.015 0.015 0.015 0.015
</nowiki>
Базовый пакет позволяет реализовать процедуру многократного повторения выражения функции как минимум двумя способами. Первый - функция <code>replicate()</code>. Приведенное выше сопоставление времени выполнения двух выражений при использовании функции <code>replicate()</code> будет выглядеть следующим образом:
{{r-code|code=<nowiki>> system.time(replicate(100, mean(x)))
пользователь система прошло
1.580 0.000 1.586
Тот же самый эффект можно получить и с помощью обычного цикла <code>for()</code>:
{{r-code|code=<nowiki>> system.time(for (i in seq_len(100)) mean(x))
пользователь система прошло
1.583 0.000 1.590
Можно также использовать описательные статистики в сочетании с множественными повторениями:
{{r-code|code=<nowiki>> median(replicate(100, system.time(mean(x))[["elapsed"]]))
[1] 0.0155
</nowiki>