6328 20

[问答] 为什么r不用循环啊 [推广有奖]

11
札翰时相投2 发表于 2017-2-20 16:27:34
juxuny 发表于 2017-2-20 09:32
R与Python都是脚本语言,不是都经过解释编译为二进制指令,再执行的吗?按我个人的经验,觉得R语言的循环并 ...
python的话会有pyc文件,感觉r的解释器和javascript更像,但javascript的循环也很快啊,虽然r是数学家,觉得循环快一点慢一点无所谓,但这速度差的有点多

12
juxuny 发表于 2017-2-20 19:25:46
札翰时相投2 发表于 2017-2-20 16:27
python的话会有pyc文件,感觉r的解释器和javascript更像,但javascript的循环也很快啊,虽然r是数学家,觉 ...
小弟亲自做了一下简单的测试,R就在Rstudio的console运行,js代码就用nodejs执行, js循环测试结果 R循环测试
结果显示 进行了同样多的循环,js代码用了81秒多,R却用了56秒左右
之所以觉得R的循环比较,可能是因为R对象的数据结构比较复杂,每次循环访问数据的时候比较耗时吧
好好学习,天天向上

13
札翰时相投2 发表于 2017-2-20 19:41:13
juxuny 发表于 2017-2-20 19:25
小弟亲自做了一下简单的测试,R就在Rstudio的console运行,js代码就用nodejs执行,
结果显示 进行了同样 ...
不能这样比的,输出的内部实现都不一样,这么简单的运算几十秒肯定有问题,不知道是不是nodejs的问题,你再试试直接在html中写javascript,很快的

14
juxuny 发表于 2017-2-20 19:48:55
札翰时相投2 发表于 2017-2-20 19:41
不能这样比的,输出的内部实现都不一样,这么简单的运算几十秒肯定有问题,不知道是不是nodejs的问题,你 ...
是的,console.log慢了,
重新测试五,把循环输出去掉,
s = Sys.time()
i = 0
while (i < 10000000) {
  i = i + 1
}
e = Sys.time()
difftime(e, s, units = "sec")

R 花了7秒,
js花了 0.15秒
我知道错了,谢谢大神

15
札翰时相投2 发表于 2017-2-20 19:59:34
juxuny 发表于 2017-2-20 19:48
是的,console.log慢了,
重新测试五,把循环输出去掉,
s = Sys.time()
比如自己实现的fft,没用递归,三重循环肯定要用到的,应该怎么改成r啊,或者说能不能改

16
juxuny 发表于 2017-2-20 20:59:49
札翰时相投2 发表于 2017-2-20 19:59
比如自己实现的fft,没用递归,三重循环肯定要用到的,应该怎么改成r啊,或者说能不能改
小弟无能为力了

17
qiu435 发表于 2017-2-23 16:05:00
比如有一个100列的data.frame,要求每一列的mean,for循环一个从第一列开始一列一列算,而向量化apply家族函数则是100列一起算,你说哪个效率高?而且就向量化的代码更容易理解,代码量也少很多

18
札翰时相投2 发表于 2017-2-23 18:38:53
qiu435 发表于 2017-2-23 16:05
比如有一个100列的data.frame,要求每一列的mean,for循环一个从第一列开始一列一列算,而向量化apply家族函 ...
内部还是用c/c++的for实现的,只不过不直接提供给你用,非要让你转换思维

19
札翰时相投2 发表于 2017-2-23 19:18:06
juxuny 发表于 2017-2-20 20:59
小弟无能为力了
我发现r的fft内部也是用c实现的

20
qiu435 发表于 2017-2-24 08:32:43
札翰时相投2 发表于 2017-2-23 18:38
内部还是用c/c++的for实现的,只不过不直接提供给你用,非要让你转换思维
C里循环比R快多了哦

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 05:14