我一直在考虑优化一个 ruby 程序,该程序对大量数据的计算非常密集。我不懂 C 并且选择了 Ruby(我也不是很了解它),而且我对结果非常满意,除了执行所需的时间。这是很多数据,而且不花任何钱,我想知道我能做些什么来确保我最大限度地利用我自己的系统资源。
当我运行一个基本的 Ruby 程序时,它是否使用单个处理器?如果我没有专门为处理器分配任务,Ruby 不会读取我的程序并神奇地加载每个处理器以尽可能快地完成程序,对吗?我假设没有...
我一直在阅读一些关于加速 Ruby 的文章,并且在另一个线程中读到 Ruby 不支持真正的多线程(尽管它说 JRuby 支持)。但是,如果我将我的程序“分解”成两个可以在单独实例中运行的块并以并行方式运行它们......这两个块会自动在两个单独的处理器上运行吗?如果我有四个处理器并打开四个外壳并运行程序的四个独立部分(1/4) - 它会在 1/4 的时间内完成吗?
更新
阅读评论后,我决定试一试 JRuby。移植应用程序并不是那么困难。我还没有使用过“peach”,但只要在 JRuby 中运行它,应用程序就可以运行 1/4 的时间!!!疯狂的。我没想到会有这么大的变化。现在要给 .peach 一个机会,看看它是如何改进的。仍然无法相信这种提升。
更新#2
刚刚试了一下桃子。最终节省了 15% 的时间。所以切换到 JRuby 并使用 Peach 绝对值得。
谢谢大家!