dclong 回复 第12楼 的 remember, discover, invent: 我觉得R的确该从底层进行改良了。我觉得R慢的原因主要是语法太灵活了,就像你所说的interpreting的时候自然就费事。碰上循环,这种时间消耗被急剧扩大,差距就出来了。我觉得还有另外一个可能的原因是R里面很多包都是基于其他一些并没有优化过的代码,这样层层累积导致一些包里面的函数效率及其低下。
dclong 回复 第13楼 的 remember, discover, invent: 我觉得R加上C/C++到底好不好用还得看具体情况吧。我以前也做时间序列的bootstrap时用R做主体框架,内部循环,代数计算等用了C,但是速度还是不理想。跟同样任务的Matlab代码相比效率差得没影了。也正是从那以后我才决定,做大型的simulation还是用单一的高效语言。至于最后的数据汇总,作图什么的,还是R是首选。
dclong 回复 第14楼 的 remember, discover, invent: 反对,反对。R可也调用其他高效语言,那么SAS也可以调用R,还可以调用R来调用其他高效语言嘛,哈哈~我是来搅局的
autoban 回复 第15楼 的 dclong:我说的只能按具体问题分析也包含这个意思,毕竟能够再每一步内部并行的模型还是属于特殊情况的,即便可以这样并行,参数个数也是有限的,并行的上限也就被局限住了。更general的并行算法的确有人做,metropolis-based算法似乎容易一点,有人做不代表这个方向就不值得研究了。个人认为现在搞计算的人过于注重外观了,统计计算的核心还应该是解决复杂度的问题,特别是当前有很多超大数据集的环境下。
autoban 回复 第19楼 的 dclong:如果换成C之后速度提升很小,说明没找准究竟哪里消耗了时间。如果.C/.Call本身被调用的次数就很多的话,而且如果DUP=TRUE,肯定overhead照样很大。
dclong 回复 第22楼 的 remember, discover, invent: 我的意思是说要从底层开始,将很多函数优化并且做得更稳健一点。而且我觉得R的一些重要包应该更新吸纳新的东西,比如说大部分产生随机数的函数都在stats包里面,但是也有很多随机函数分布在其他各种包里面。这样使用起来不是很方便,有时候你要找很久才能找到可以产生自己想要的随机数的包和相应的函数。
dclong 回复 第23楼 的 remember, discover, invent: 有那找和测试的时间,用C就写完了。R又不像Matlab和Mathematica那样可以帮你分析code,指出你可以改进的地方。
G_will 回复 第27楼 的 dclong: 哈,如果要说开发部署快,那还有Python呢,也轮不到Java,而且作为一种天生c构成的脚本的胶水语言--Python调用各种东西都比Java来的方便。 用Python 结合C、R兼顾开发效率、运行效率、专业。 另外,关于IDE帮你分析代码,那没办法,那和语言无关,那是用钱买来的。 [s:11]
autoban 回复 第27楼 的 dclong:At the very minimum, you should at leat Rprof() it before translation. I don't think that will take you a few minutes, but will of course save you a lot of time in writing C-level code. If you are sooooo proficient in C, you shouldn't raise such an endless discussion.
autoban 回复 第26楼 的 dclong:That's not possible, because the cardinality of the set of distributions is surely infinite.
enthumelon 回复 第23楼 的 remember, discover, invent:随机(分布)函数在tr1和gsl中吧... boost也是写C++的必修。不过一般都是拿R什么的做快速开发(简单模型和数据结构),复杂的(算法或者数据结构)R有些爱莫能助。 回复 第28楼 的 G_will:顺便吐槽一句: 发明python的人简直没有小jj,谁用numpy谁知道...
enthumelon 回复 第26楼 的 dclong:分布函数的合集见: http://cran.r-project.org/web/views/Distributions.html 至于最优化... http://cran.r-project.org/web/views/Optimization.html 显然不够看。 这事儿不能说太细(google下Rdonlp的案例...), 某些最优化的东西有各种约束(专利啊,版权啊)。R forge这方面的开发很活跃。 但是和matlab这样的老牌软件比起来逊色很多(matlab怎么看也是专门做计算数学等人用的)。
dclong 回复 第30楼 的 remember, discover, invent: 这跟cardinality有什么关系?我又没说要所有的分布全部放进去,我只说应该不停的更新。一个软件当然要向前发展,要不很快就被淘汰了。照你那么说,所有函数的cardinality更是无穷了,那还做R干什么呀,反正也永远无法穷尽