我应该将我的R程序转换为Julia吗?

时间:2017-11-02 11:21:24

标签: r performance julia

这是一个非常普遍的问题,但即使花了一些时间来阅读这个问题,我仍然不清楚在哪些情况下我应该花费(合理的)时间来转换我的R代码在Julia和其他人哪个不值得?

您能否提供一些实际示例,R-Julia转换有助于提高代码的性能(还有可读性)?

@putters暂停我的问题:编辑我的问题以使其合适将会非常友好(并且非常有帮助)。请注意,我要求"现实生活中的例子"在我最初的问题中,确保答案不是主要基于意见的#34; ......我还能做什么?

2 个答案:

答案 0 :(得分:6)

取决于你将要使用的代码。一般来说,我会说不。我已将95%的工作流程从R迁移到Julia,但我移植的唯一现有代码库是我发布的R包(发布的julia包)。 另一方面,我通过这个项目(http://science.sciencemag.org/content/353/6307/1532)将我的R分析代码移植到Julia,并获得了100倍的加速。

答案 1 :(得分:3)

这是一个问题,无论是否主要在Julia或R中编码,而是完全不同的编码,是否要将完成的R代码传输给Julia。如果你选择在R中主要写它,可能是因为你比R在Jul中更精通。因此,你有很好的机会改进你的R代码或从头开始Julia。显然,朱莉娅很快,如果你知道如何快速做到这一点:Julia much slower than Java https://matloff.wordpress.com/2014/05/21/r-beats-python-r-beats-julia-anyone-else-wanna-challenge-r/

对Julia的基准声明进行了大量讨论,但让我们假设,在Julia中,R平缓的平均任务速度快100倍(并且假设,你在Julia中足够精通以实现这一目标)和你的程序员时间5倍于你的计算机运行时间(即1小时的编程和让快速程序运行同样是一个选项,因为让一台计算机运行5个小时的语言速度较慢)比我们有20倍的Julia优势。

这个问题归咎于你多久经常找到一份工作,其中20倍的优势非常值得学习一门语言,跟上包装的发展,让你的系统保持最新状态,冒着失去的风险时间因为混合起来。

如果由于互联网连接速度慢或硬盘驱动器速度慢而导致这些作业缓慢,您将无法实现20倍。如果你经常面临工作,那些值得加速,但不是并行化的,那么C ++甚至比Julia更快?如果我们谈论恼人的并行作业,可能从R内部并行化到GPU是一个更快的选择。

所有这些使得从运行R代码到Julia代码的翻译值得一个非常特殊的人群。我知道,我没有遇到过这样的情况,但YMMV。

这绝对不是反朱莉娅的帖子。如果您精通两种语言,那么在Julia中编写耗时的代码通常可能是一个好主意。如果你对朱莉娅不够熟练,那么你可能没有像你想象的那样将时间投入到R优化中,从而获得更快的速度。