diff --git a/_docs/websockets.md b/_docs/websockets.md index d55936f..e993106 100644 --- a/_docs/websockets.md +++ b/_docs/websockets.md @@ -37,3 +37,44 @@ ws "/" do |socket| end end ``` + +## Performance + +Thanks to Crystal Kemal has superb performance for Websockets. + +Crystal 0.9.1 with [Kemal] + +```ruby +require "kemal" + +ws "/" do |socket| + socket.on_message do |message| + end +end +``` + +Node.js v4.2.1 with [ws](https://github.com/websockets/ws) + +```js +var WebSocketServer = require('ws').Server + , wss = new WebSocketServer({ port: 3000 }); + +wss.on('connection', function connection(ws) { + ws.on('message', function incoming(message) { + }); + +}); +``` + +[Thor](https://github.com/observing/thor) is used to run the benchmark. + +`thor -A 10000 http://localhost:3000` + +| Platform | CPU Usage | Memory Usage | +| :------------ |:---------------:| -----:| +| Crystal (Kemal) | 1.85 | 11.2 MB | +| Node.js (ws) | 38.95 | 906.3 MB | + +This benchmark was performed on a 2013 Late Macbook Pro with 2Ghz i7 and 8G ram. + +P.S: Less is better