R中的执行效率与程序员效率

时间:2010-02-03 14:26:27

标签: performance r

经典而精彩的Programming Perl参考书中有一个部分,其中作者提供了有关如何编写最高计算效率的Perl的建议列表,然后是如何使用的建议列表编写最高效的程序员的Perl,然后为维护者高效 porter高效用户效率提供更多建议。建议通常是完全矛盾的。 (例如,“使用全局变量”,“不要使用全局变量。”)

我在努力将一些“程序员高效”的R代码转换为“计算和维护者有效”代码时考虑到了这一点。

这些线条的R风格有哪些有趣且有用的提示?哪些实践最有效的程序员,以及解决其他效率概念的等效实践是什么?

3 个答案:

答案 0 :(得分:19)

Programmer efficient                 |   Computationally efficient
                                     |
Write everything in R                |   Call C/Fortran routines
Reuse code                           |   Custom create everything 
  (functions not scripts,            |
  packages not individual functions) |
Use high level functions             |   Use low-level functions
Write things that work               |   Write it, profile it, optimise it.
                                     |     Repeat ad infinitum.

答案 1 :(得分:2)

你可以指望什么是缓慢的是在循环中重建数据的任何东西,比如将元素附加到向量,如果已经做了很多

答案 2 :(得分:1)

我认为样式指南(如之前所讨论的那样)有助于程序员的效率。 R Core似乎同意提供一些提示(以及用于一致缩进的Emacs参数)。

法令更难以实现执行效率。你可能不得不回到经验法则('vectorise')以及分析。