在R中定时相同的算法,蟒蛇,C++

January 6,二千零一十九
By

(本文首次发表于 R–Win Vector博客,并对 188bet appR博主

在开发RcppDynProg Rpackage I took a little extra time to port the core algorithm fromC++to bothR蟒蛇.

这意味着我可以对这三种语言中的每种实现几乎相同的算法计时。So I can extract some comparative"从苹果到苹果”计时。Please read on for a summary of the results.

The algorithm in question is the general动态规划 solution to the"最小成本间隔”问题.As coded inC++它使用大表的一次性分配,然后对于-循环和索引追踪以填充动态编程表解决方案。这个C++code is given在这里.

然后我直接将此代码翻译(或逐行翻译)为R(代码)在这里蟒蛇(代码)在这里).Both of these implementations are very direct translations of theC++解决方案,所以他们可能不是刚开始的人Ror蟒蛇将设计。所以我们真的是在一个命令中编码Cstyle inR蟒蛇.为了强调港口的浅薄,我特意从C++R端口。这个蟒蛇can be taken to be equally"un-Pythonic"(例如,we are using对于循环而不是列出理解)。

也就是说,我们现在有非常相似的代码来比较这三种语言。我们可以总结时间(细节在这里在这里如下所示。

问题 解决方案语言 time in seconds
500点区间划分动态程序 R 21
500点区间划分动态程序 C++(通过RCPP的R) 零点零八八
500点区间划分动态程序 蟒蛇 三十九

注意这个例子C++比…快240倍R,和R几乎是速度的两倍蟒蛇

既不R也不蟒蛇针对跟踪此动态编程解决方案所依赖的索引类型进行了优化。因此,我们还研究了一个更简单的问题:计算the PRESS statistic,哪个是易于矢量化(首选在R也不蟒蛇).当我们在这个问题上比较这三种语言时,我们看到了以下内容。

问题 求解方法 time in seconds
3,000,000 point PRESS statistic calculation R标量码 3.4
3,000,000 point PRESS statistic calculation RCPP标量代码 0.26
3,000,000 point PRESS statistic calculation R矢量化代码 零点三五
3,000,000 point PRESS statistic calculation python矢量化(努皮) 0.21

可以找到时间详细信息在这里在这里.

忽视R标量解(即直接翻译自C++R,但是一块踏脚石Rvectorized solution as we discuss在这里).我们看到:矢量化蟒蛇is now 金宝搏网址about 1.6 times faster than the vectorizedR甚至比C++(可能不是因为RCPP,而是由我在C++code).

显然,不同的代码(以及每种语言的调优和优化)会产生不同的结果。但上述情况与我们在R,,蟒蛇,和C++在生产中。

总之:R蟒蛇实际上比C++对于直接标量操作(单个值,索引,指针)。However,,R蟒蛇是有效的当它们在更高层次的抽象(向量,向量,和databases,数据帧,星火)。

留下评论for the author,please follow the link and comment on their blog: R–Win Vector博客.

188bet appR-bloggers.com提供 daily e-mail updates金宝搏网址 R新闻与 教程关于以下主题: 数据科学,, 大数据,, r作业,可视化(可视化) ggplot2,, 箱形图,, maps,, 动画)程序设计(程序) 演播室,, Sweave,, LaTeX,, SQL,, Eclipse,, git,, 哈多普,, 刮网)统计 回归,, 主成分分析,, 时间序列,, 交易还有更多…



If you got this far,why not subscribe for updates 从站点?选择您的口味: 电子邮件,, 推特,, 1188bet app,or facebook...

Comments are closed.

搜索R-Blo188bet appggers


Sponsors

千万不要错过更新!!
订阅R-Bloggers188bet app接收
最新R帖子的电子邮件。
(You will not see this message again.)

单击此处关闭(此弹出窗口将不再出现)