Skip to content

Instantly share code, notes, and snippets.

@tutkun
Forked from sdogruyol/websocket_bencmark.md
Created June 30, 2018 16:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tutkun/b10be2b8cbdab9502182994a5d4fd0c4 to your computer and use it in GitHub Desktop.
Save tutkun/b10be2b8cbdab9502182994a5d4fd0c4 to your computer and use it in GitHub Desktop.

Crystal vs Node.js Websocket Benchmark

Crystal 0.9.1 with Kemal

require "kemal"

ws "/" do |socket|
  socket.on_message do |message|
  end
end

Node.js v4.2.1 with ws

var WebSocketServer = require('ws').Server
  , wss = new WebSocketServer({ port: 3000 });

wss.on('connection', function connection(ws) {
  ws.on('message', function incoming(message) {
  });

});

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment