... кроме того факта, что Rscript вызывается с #!/usr/bin/env Rscript
и littler с #!/usr/local/bin/r
(на моем система) в первой строке файла сценария. Я обнаружил некоторые различия в скорости выполнения (кажется, что littler немного медленнее).
Я создал два фиктивных сценария, запускал их 1000 раз и сравнивал среднее время выполнения.
Вот файл 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)
и вот файл меньшего размера:
#!/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
редактируются в текстовый файл, поэтому импортируются в R с read.table
. Я создал скрипт bash для выполнения каждого скрипта 1000 раз, а затем вычислил средние значения.
Вот скрипт bash:
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 (или наоборот)?