Instantly share code, notes, and snippets.

What would you like to do?

Crystal vs Node.js Websocket Benchmark

Crystal 0.9.1 with Kemal

require "kemal"

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

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


This comment has been minimized.

ghost commented Apr 18, 2016

Holy shit lol


This comment has been minimized.

Nephos commented May 13, 2016

I love this lang ❤️


This comment has been minimized.

nemoDreamer commented Jul 14, 2016



This comment has been minimized.

Nicolab commented Aug 28, 2018

The result will be more representative with uws package, ws is slow.

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