加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在所有处理器上运行ruby程序

发布时间:2020-12-17 03:22:21 所属栏目:百科 来源:网络整理
导读:我一直在寻找优化 ruby程序,这个程序对很多数据来说都是计算密集型的.我不知道C并且选择了 Ruby(不是我也很清楚)并且除了执行时间之外我对结果非常满意.这是一个很多数据,没有花钱,我想知道我能做些什么来确保我最大化自己的系统资源. 当我运行一个基本的Rub
我一直在寻找优化 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 /核心数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读