Изменения

Перейти к: навигация, поиск

R:Профилирование кода

1367 байтов добавлено, 13:12, 27 января 2014
м
Функция proftable()
<syntaxhighlight lang="rsplus">
> library(devtools)library(digest)> source_url("https://raw.github.com/noamross/noamtools/master/R/proftable.R")
</syntaxhighlight>
Для корректной работы функции {{Inline-code|proftable()|lang="rsplus"}} необходимо провести профилирование с включённой опцией {{Inline-code|line.profiling|lang="rsplus"}}. Для удобства последующего анализа результатов сохраним нашу можно сохранить функцию и её вызов в файлскрипта и вызывать его с помощью функции {{Inline-code|source()|lang="rsplus"}}. Скрипт для профилирования имеет следующее содержимое:
<syntaxhighlight lang="rsplus"line>tmp.R desc <- tempfilefunction(fileext = ".R"x){dump n <- length("desc", tmp.Rx)cat mean <- mean("x) median <- median(x) sd <- sd(x) min <- min(x) max <- max(x) return(c(n, mean, median, sd, min, max))} for (i in seq_len(100))\n invisible(desc(nvec))", file = tmp.R, fill = TRUE, append = TRUEx)
</syntaxhighlight>
<syntaxhighlight lang="rsplus">
> Rprof(tmp.log, line.profiling = TRUE)> source("/tmp/script.R")> Rprof(NULL)unlink(tmp.R)> unlink(tmp.log)
</syntaxhighlight>
<syntaxhighlight lang="rsplus">
tmp.log <- paste0(LOGDIR, "/desc-lineprof.log")> library(plyr)> proftable(tmp.log) PctTime Call 54.464 1#4 > median > median.default > mean > sort > sort.default > sort.int 10.268 1#5 > sd > var > .Call 7.143 1#7 > max 5.804 1#4 > median > median.default > is.na 5.357 1#4 > median > median.default > mean > sort > sort.default > sort.int > is.na 5.357 1#6 > min 4.464 1#3 > mean > mean.default 3.571 1#4 > median > median.default > any 3.125 1#4 > median > median.default > mean > sort > sort.default > sort.int > any 0.446 1#4 > median  #File 1: /tmp/RtmpAvhCfO/file23b65745e7ba.R Parent Call: source > withVisible > eval > eval > 1#11 > desc > Total Time: 4.48 secondsPercent of run time represented: 100 %
</syntaxhighlight>

Навигация