我用Goliath
写了一个'Hello World'应用程序,我决定在它上面挂载Grape
:
#!/usr/bin/env ruby
require 'rubygems'
require 'bundler/setup'
Bundler.setup :default
require 'goliath'
require 'grape' # <-- Comment out this line will hugely increase performance, but why?
class Server < Goliath::API
def response(env)
[200, {}, 'Hello, world!']
end
end
我对它进行了基准测试:
ab -n 1000 -c 100 http://localhost:9000/
它显示每秒可以处理大约250个请求。但是当我注释掉require 'grape'
行时,这个值突然增加到700左右。有人能回答为什么简单的require
能带来如此巨大的差异吗?
注:我使用MRI 2.2.2
您是否在生产模式下运行Goliath ?你必须设置-e prod,它会在每次请求时重新加载代码。