有问题吗?是否会对资源产生一些限制?
#main.rb
(1..100000).each do |loop|
`ruby dosomething.rb`
end
我这样做的原因是因为main.rb需要在Jruby中运行。
Somescript.rb在Ruby中使用更少的资源运行得更快,因此我将它作为shell命令运行。
答案 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很酷。