gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 07:15:21 30 4
gpt4 key购买 nike

我一直在研究优化一个 ruby​​ 程序,该程序对大量数据的计算非常密集。我不懂 C 而选择了 Ruby(我也不是很了解),除了执行所需的时间之外,我对结果非常满意。这是大量数据,而且无需花费任何金钱,我想知道我可以做些什么来确保最大限度地利用我自己的系统资源。

当我运行一个基本的 Ruby 程序时,它使用单处理器吗?如果我没有专门将任务分配给处理器,Ruby 就不会读取我的程序并神奇地加载每个处理器以尽快完成程序,对吗?我假设没有...

我一直在阅读一些关于加速 Ruby 的文章,并且在另一个线程中读到 Ruby 不支持真正的多线程(尽管它说 JRuby 支持)。但是,如果我要将我的程序“分解”成两个 block ,这两个 block 可以在不同的实例中运行并并行运行……这两个 block 会自动在两个单独的处理器上运行吗?如果我有四个处理器并打开四个 shell 并运行程序的四个独立部分 (1/4) - 它会在 1/4 的时间内完成吗?

更新

阅读评论后,我决定试一试 JRuby。移植应用程序并不困难。我还没有使用过“peach”,但只要在 JRuby 中运行它,应用程序的运行时间就会缩短 1/4!!!疯狂的。我没想到会有这么大的变化。现在要给 .peach 一个机会,看看它如何改进。仍然无法相信这种提升。

更新#2

刚刚尝试了桃子。最终又节省了 15% 的时间。因此,切换到 JRuby 并使用 Peach 绝对是值得的。

谢谢大家!

最佳答案

使用 JRuby 和 peach gem ,再简单不过了。只需将 .each 替换为 .peach 瞧,您就可以并行执行了。还有其他选项可以精确控制产生多少线程等。我已经使用过它并且效果很好。

您获得了接近 n 倍的加速,其中 n 是可用的 CPU/内核数。我发现最佳线程数略多于 CPU/核心数。

关于ruby - 使 ruby​​ 程序在所有处理器上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13350421/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com