Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“运行”;ruby something.rb";在每个循环中_Ruby_Jruby - Fatal编程技术网

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

“运行”;ruby something.rb";在每个循环中,ruby,jruby,Ruby,Jruby,这样做有问题吗?资源是否会受到限制 #main.rb (1..100000).each do |loop| `ruby dosomething.rb` end 我这样做的原因是main.rb需要在Jruby中运行 Somescript.rb只在Ruby中使用较少的资源运行得更快,因此我将它作为shell命令运行。那么启动Ruby进程、解析脚本、执行脚本并退出100000次比在JRuby下将脚本导入循环要快?好吧,如果你已经测量过了,那么你所做的没有太大的错误。但是如果您只在JRuby和ru

这样做有问题吗?资源是否会受到限制

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

`ruby dosomething.rb`

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


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

那么启动Ruby进程、解析脚本、执行脚本并退出100000次比在JRuby下将脚本导入循环要快?好吧,如果你已经测量过了,那么你所做的没有太大的错误。但是如果您只在JRuby和ruby下运行过一次脚本(或者平均运行5次,而不是100000次的循环,那么您所做的很可能有问题,因为您已经部分比较了JRuby启动时间和ruby启动时间,这不是一个公平的比较,因为您必须按照您实际编写的内容运行JRuby和ruby

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

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

这样做并没有什么“错误”。这不是解决内存错误的好方法,我担心您必须部署到的环境中。如果您必须在JRuby中运行,这可能是因为您的系统管理员不希望安装Ruby MRI的构建,所以要求运行该构建很奇怪


但是,是的,如果它能工作,它就能工作。我会和你的系统管理员谈谈,确保运行MRI和JRuby是很酷的。

这就是为什么我要使用这个。如果我读对了,你的意思是,你不能在JRuby中循环运行它,因为它最终会耗尽内存,而作为进程运行它不会耗尽我的内存mory.这很令人沮丧,但这肯定是强制清除每次运行中使用的内存的一种方法。请记住,如果调用代码使用Bundler(例如,如果循环位于Rails 3应用程序中的helper方法中),其子进程将继承一个
RUBYOPT
env't变量,这意味着“external ruby”的每个fork()将运行
需要“bundler/setup”
。突然
1..100000
变得非常重要。。。