- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
...除此之外,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
写入文本文件,因此通过read.table
导入到R中。我创建了 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(反之亦然)?
最佳答案
一些简短的评论:
路径 /usr/local/bin/r
是任意的,您可以像我们在某些情况下一样使用 /usr/bin/env r
例子。我记得,它限制了您可以向 r
提供的其他参数,因为通过 env
我不明白你的基准,也不明白你为什么要这样做。我们确实在源代码中进行了时序比较,请参阅tests/timing.sh
和tests/timing2.sh
。也许您想将测试分为启动和图形创建或任何您想要的东西。
每当我们进行这些测试时,很少有人获胜。 (当我现在重新运行它们时,它仍然获胜。)这对我们来说很有意义,因为如果您查看 Rscript.exe
的源代码,它通过设置环境和命令字符串来工作不同在最终调用 execv(cmd, av) 之前。较小的人可以更快地开始。
主要的代价是便携性。由于构建的规模较小,因此它不会出现在 Windows 上。或者至少不容易。 OTOH,我们已经移植了 RInside,所以如果有人真的想...
Littler 在 2006 年 9 月首次亮相,而 Rscript 则于 2007 年 4 月随 R 2.5.0 一起发布。
Rscript 现在无处不在。这是一个很大的优势。
在我看来,命令行选项对于较小的用户来说更为明智。
两者都与 CRAN 包 getopt 和 optparse 一起使用来进行选项解析。
所以这是个人喜好。我与人共同编写了一些小东西,从中学到了很多东西(例如 RInside)并且仍然发现它很有用——所以我每天使用它数十次。它驱动蔓越莓。它驱动cran2deb。正如他们所说,您的里程可能会有所不同。
免责声明:littler 是我的项目之一。
后记:我会将测试编写为
fun <- function { X <- rnorm(100); print(x); print(plot(x)) }
replicate(N, system.time( fun )["elapsed"])
甚至
mean( replicate(N, system.time(fun)["elapsed"]), trim=0.05)
去除异常值。此外,您本质上只测量 I/O(打印和绘图),两者都将从 R 库获得,因此我预计差异不大。
关于r - Rscript 和 Littler 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3205302/
平时很少在jquery中用到this。查看代码时发现用到了,就调试出this的值,心想原来如此。还是挺有用的。这里总结一下this与$(this)的区别和使用。 $(this)生成的是什么?
使用单例类和应用程序范围的托管 bean 来保存应用程序数据有区别吗? 我需要查找某些 JNDI 资源,例如远程 bean 接口(interface),因此我为自己编写了一个单例来缓存我的引用并且只允
如果您仔细查看包含的图片,您会注意到您可以使用 Eclipse IDE 重构 Groovy 代码并将方法转换为闭包,反之亦然。那么,闭包到底是什么,它与方法有什么不同呢?有人可以举一个使用闭包的好例子
vagrant box repackage有什么区别( docs ) 和 vagrant package ( docs )? 我意识到 vagrant package仅适用于 VirtualBox 提
我想看看是否有人可以解释为什么以下代码适用于 valueOf 但不适用于其他代码。 import java.math.BigDecimal; public class Change { publ
这个问题已经有答案了: 已关闭12 年前。 Possible Duplicates: What is Closures/Lambda in PHP or Javascript in layman te
This question already has answers here: Vagrant, Docker, Puppet, Chef (3个答案) 2年前关闭。 docker和chef有什么共同
以下代码在95%的机器上产生相同的输出,但是在几台机器上却有所不同。在 Debug模式下,输出: Changing from New to Fin OK 但在 Release模式下: Changing
////Creating Object var Obj; // init Object Obj= {}; 它们之间有什么区别两个? 有没有可能把它变成一个单行? 这样使用有什么好处吗?
我想找出定时器服务之间的区别。我应该使用哪个以及何时使用。我正在使用 Jboss 应用服务器。 1) java.ejb.Schedule。 @Schedule注解或配置自xml。 2) javax.e
我发现在 C++ 中可以通过三种不同的方式将对象传递给函数。假设我的类(class)是这样的: class Test { int i; public: Test(int x);
有什么区别。 public class Test { public static void main(String args[]) { String toBeCast = "c
如果我有一列,设置为主索引,设置为INT。 如果我不将其设置为自动递增,而只是将唯一的随机整数插入其中,与自动递增相比,这是否会减慢 future 的查询速度? 如果我在主索引和唯一索引为 INT 的
这两种日期格式有什么区别。第一个给出实际时间,第二个给出时间购买添加时区偏移值。 NSDateFormatter * dateFormatter = [[NSDateFormatter alloc]
如果有一个函数,请说foo: function foo() { console.log('bar'); } 那么在 JavaScript 中,从另一个函数调用一个函数有什么区别,如下所示: f
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 4 年前。 Improv
代码是什么: class Time { private: int hours; int minutes; int seconds; pu
我知道这是非常基本的,但有人介意解释一下这两个数组声明之间的区别吗: #include array myints; ...和: int myints[5]; ...以及为什么 myints.size
我学会了如何根据 http://reference.sitepoint.com/css/specificity 计算 css 特异性但是,基于this reference,我不明白伪类(来自c)和伪元
为什么在运行 2) 时会出现额外的空行?对我来说 1 就像 2。那么为什么 2) 中的额外行? 1) export p1=$(cd $(dirname $0) && pwd) #
我是一名优秀的程序员,十分优秀!