R对MongoDB的机能测试——RMongo
在九月初的时候,RMongoDB正式宣布了修订版本,这也就意味着,从事数值计较的语言也可以于NoSQL产物相接轨了,可是鉴于我身边并没有公司真的在利用R和MongoDB的团结,所以在效率问题上,我们也不敢掉以轻心,所以就做了一个这样的测试。
测试情况是8核,64位机。 用于测试的库是一个未经Sharding,或许30G阁下的Collection。用于存储用户的爱好信息,标签信息等数据。
之前我一直不太领略的就是为什么大于和便是,差距会差这么多。厥后当我在用Python去做同样的测试的时候发明,Python两者的效率其实是沟通的,所以这就证明白这个不是MongoDB的问题,而我不相信在数据库层面,一个语言的Driver会有这么大的不同。
厥后我发明白Python和R的关于MongoDB Driver的一个区别。首先,Python find的时候,不是将查询到的数据集整体拉回,而是返回一个cursor,也就是说,他在执行find呼吁的时候并不用耗时间,而假如加上while cursor.next()的时候,才会真正地去执行这个查询。
可是R纷歧样,R会首先思量数据集的巨细(可能其他环境),然后视环境而定地返回cursor照旧将整个数据集整体拉回。假如我们将之前的while mongo.cursor.next(cursor)也算在计较时间的时候,那么我们就会发明,其实大于和便是的操纵,效率相差并不明明晰…….
在实际操纵中,批量插入是一个非经常见的应用场景,可是对付R可能Matlab语言来说,轮回的效率一直是硬伤,所以接下来,我会实验着用apply系列来办理R语言的轮回问题,假如实际操纵发明可行,那么接下来利用mutilab等R的并行计较库来充实发挥多核的效率也值得实验了!
本文转自:http://www.cnblogs.com/kym/archive/2011/09/26/2191501.html