在所有处理器上运行ruby程序
我一直在寻找优化
ruby程序,这个程序对很多数据来说都是计算密集型的.我不知道C并且选择了
Ruby(不是我也很清楚)并且除了执行时间之外我对结果非常满意.这是一个很多数据,没有花钱,我想知道我能做些什么来确保我最大化自己的系统资源.
当我运行一个基本的Ruby程序时,它是否使用单个处理器?如果我没有专门为处理器分配任务,Ruby将无法读取我的程序并神奇地加载每个处理器以尽快完成程序吗?我假设没有…… 我一直在阅读关于加速Ruby的一些内容,并在另一个线程中读到Ruby不支持真正的多线程(虽然它说JRuby确实如此).但是,如果我将我的程序“分解”为两个可以在不同实例中运行的块并以parralel运行它们……这两个块会自动在两个独立的处理器上运行吗?如果我有四个处理器并打开了四个炮弹并运行了四个独立的部分(1/4) – 它会在1/4的时间内完成吗? 更新 看完评论后,我决定给JRuby一个机会.移植应用程序并不困难.我还没有使用“桃子”,但只需在JRuby中运行它,该应用程序运行时间为1/4!疯.我没想到会发生太大变化.现在给.peach打一针,看看它是如何改善的.仍然无法相信提振. 更新#2 刚试了一下桃子.结束剃须另外15%的时间.所以切换到JRuby并使用Peach绝对值得. 感谢大家! 解决方法
使用JRuby和
peach gem,它就不容易了.只需用.peach替换.each即可,并行执行.并且还有其他选项可以精确控制生成的线程数等等.我已经使用过它并且效果很好.
接近n倍加速,其中n是可用的CPU /核心数.我发现最佳线程数略多于CPU /核心数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |