【发布时间】:2011-03-13 10:17:28
【问题描述】:
...除了 Rscript 被 #!/usr/bin/env Rscript 调用和 littler 被 @987654323 调用的事实之外@(在我的系统上)在脚本文件的第一行。我发现执行速度存在某些差异(似乎 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)
如您所见,它们几乎相同(第一行和接收器文件参数不同)。输出是sinked 到文本文件,因此在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(反之亦然)?
【问题讨论】:
-
+1 好问题;喜欢细节。
-
感谢 Shane,数据文件在此处可用:bit.ly/ac0Fb1 请注意,我的机器非常慢,因此如果您决定运行这些脚本,则更有可能获得较低的值。像往常一样,Dirk 的出色答案引起了人们对这些基准脚本的其他问题的关注……所以请以这些结果 cum grano salis 为例。
标签: r scripting execution-time littler