... кроме того, что Rscript вызывается с #!/usr/bin/env Rscript
и littler с #!/usr/local/bin/r
(в моей системе) в первой строке файла script, Я обнаружил определенные отличия в скорости выполнения (кажется, что littler немного медленнее).
Я создал два фиктивных сценария, каждый раз запускал их и сравнивал среднее время выполнения.
Здесь файл Rscript:
#!/usr/bin/env Rscript
btime <- proc.time()
x <- rnorm(100)
print(x)
print(plot(x))
etime <- proc.time()
tm <- etime - btime
sink(file = "rscript.r.out", append = TRUE)
cat(paste(tm[1:3], collapse = ";"), "\n")
sink()
print(tm)
и здесь файл littler:
#!/usr/local/bin/r
btime <- proc.time()
x <- rnorm(100)
print(x)
print(plot(x))
etime <- proc.time()
tm <- etime - btime
sink(file = "little.r.out", append = TRUE)
cat(paste(tm[1:3], collapse = ";"), "\n")
sink()
print(tm)
Как вы можете видеть, они почти идентичны (аргумент файла первой строки и приемника отличается). Вывод sink
ed в текстовый файл, поэтому импортируется в R с помощью read.table
. Я создал bash script для выполнения каждого script 1000 раз, затем вычислял средние значения.
Здесь bash script:
for i in `seq 1000`
do
./$1
echo "####################"
echo "Iteration #$i"
echo "####################"
done
И результаты:
# littler script
> mean(lit)
user system elapsed
0.489327 0.035458 0.588647
> sapply(lit, median)
L1 L2 L3
0.490 0.036 0.609
# Rscript
> mean(rsc)
user system elapsed
0.219334 0.008042 0.274017
> sapply(rsc, median)
R1 R2 R3
0.220 0.007 0.258
Короче говоря: помимо (очевидной) разницы во времени исполнения, есть ли другая разница? Более важный вопрос: почему вы/не должны предпочесть littler над Rscript (или наоборот)?