在每个循环中运行“ruby something.rb”

时间:2009-11-28 06:52:02

标签: ruby jruby

有问题吗?是否会对资源产生一些限制?

#main.rb
(1..100000).each do |loop|

`ruby dosomething.rb`

end

我这样做的原因是因为main.rb需要在Jruby中运行。

Somescript.rb在Ruby中使用更少的资源运行得更快,因此我将它作为shell命令运行。

2 个答案:

答案 0 :(得分:2)

因此启动ruby进程,解析脚本,执行它并退出100,000次比将脚本导入到JRuby下的循环更快?好吧,如果你已经测量过那么好,那么你所做的事情并没有太大的错误。但是如果你只测量在JRuby中运行一次脚本并且曾经在ruby下运行一次(或者可能是平均5次运行,而不是在100,000次循环中运行,那么你正在做的事情可能会出现问题,因为你已经进行了部分比较JRuby启动时间到ruby启动时间,这不是一个公平的比较,因为你必须运行JRuby然后ruby你实际编写的内容。

从您的评论中看来,在JRuby中运行时,您似乎无法清除每次运行所使用的内存。在这种情况下,您可以尝试在外部ruby中运行循环的varient,如果正确处理内存,则比启动ruby 100,000次更好。

#main.rb
`ruby dosomething.rb`
----
#dosomething.rb
(1..100000).each do |loop|
doingSomething
end

答案 1 :(得分:0)

做这件事并没有多大'错误'。这不是解决内存错误的好方法,我担心你必须部署的环境。如果你必须在JRuby中运行,似乎可能是因为你的系统管理员不希望安装Ruby MRI,所以要求运行是奇怪的。

但是,如果它有效则可行。我会和你的系统管理员谈谈,并确保运行MRI和JRuby很酷。