... bên cạnh thực tế là Rscript được gọi với #!/usr/bin/env Rscript
và Littler với #!/usr/local/bin/r
(trên hệ thống của tôi) ở dòng đầu tiên của file script. Tôi đã tìm thấy sự khác biệt nhất định về tốc độ thực thi (có vẻ như littler chậm hơn một chút).Sự khác nhau giữa Rscript và Littler
Tôi đã tạo hai tập lệnh giả, chạy mỗi 1000 lần và so sánh thời gian thực hiện trung bình.
Dưới đây là file 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)
và đây là file 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)
Như bạn có thể thấy, họ gần như giống hệt nhau (dòng đầu tiên và chìm file đối số khác nhau). Đầu ra là sink
được chỉnh sửa thành tệp văn bản, do đó được nhập bằng R với read.table
. Tôi đã tạo tập lệnh bash để thực thi mỗi kịch bản 1000 lần, sau đó tính trung bình.
Dưới đây là bash script:
for i in `seq 1000`
do
./$1
echo "####################"
echo "Iteration #$i"
echo "####################"
done
Và kết quả là:
# 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
câu chuyện dài ngắn: bên cạnh (hiển nhiên) sự khác biệt thực hiện theo thời gian, có một số khác biệt khác? Câu hỏi quan trọng hơn là: tại sao/không nên bạn thích littler trên Rscript (hoặc ngược lại)?
+1 Câu hỏi hay; yêu chi tiết. – Shane
Cảm ơn Shane, tập tin dữ liệu có sẵn ở đây: http://bit.ly/ac0Fb1 Lưu ý rằng tôi có máy rất chậm, vì vậy nếu bạn quyết định chạy các tập lệnh này, bạn có nhiều khả năng nhận được các giá trị thấp hơn. Câu trả lời tuyệt vời của Dirk, như thường lệ, đã thu hút sự chú ý đến các vấn đề khác với các kịch bản chuẩn này ... vì vậy, hãy xem những kết quả này là grano salis. – aL3xa