ruby 1.9.2 + async_sinatra + thin thin start
ab -n 10000 -c 100 http://localhost:3000/
-> 49ms / request
node server.js
ab -n 10000 -c 100 http://localhost:3000/
-> 20ms / request
| #!/usr/bin/env | |
| require 'sinatra/async' | |
| class AsyncTest < Sinatra::Base | |
| register Sinatra::Async | |
| aget '/' do | |
| body "hello async" | |
| end | |
| end | |
| run AsyncTest.new |
| // Load the http module to create an http server. | |
| var http = require('http'); | |
| // Configure our HTTP server to respond with Hello World to all requests. | |
| var server = http.createServer(function (request, response) { | |
| response.writeHead(200, {"Content-Type": "text/plain"}); | |
| response.end("Hello World\n"); | |
| }); | |
| // Listen on port 8000, IP defaults to 127.0.0.1 | |
| server.listen(3000); | |
| // Put a friendly message on the terminal | |
| console.log("Server running at http://127.0.0.1:8000/"); |
Or you could go the other way and benchmark a straight Rack "Hello World" application.
feel free to fork :)
With ruby 1.9.3 I got about 98ms with ruby and 21ms with node 0.6.18
I don't think it's fair comparison because Sinatra is having more features.
So, put something on to node server.js(such as express so that it can match sinatra)
and test again.