Skip to content

Instantly share code, notes, and snippets.

@jlongster
Last active October 21, 2016 03:01
Show Gist options
  • Save jlongster/f6504b228494349d0c7643b4678a0479 to your computer and use it in GitHub Desktop.
Save jlongster/f6504b228494349d0c7643b4678a0479 to your computer and use it in GitHub Desktop.
--- reason (cohttp) ---
jlong-16106:~/tmp/wrk(master)% ./wrk -t12 -c400 -d30s http://127.0.0.1:8000/
Running 30s test @ http://127.0.0.1:8000/
12 threads and 400 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 12.45ms 6.96ms 45.37ms 62.82%
Req/Sec 2.16k 652.23 9.32k 84.95%
772252 requests in 30.04s, 2.31GB read
Socket errors: connect 0, read 1057, write 0, timeout 0
Requests/sec: 25706.00
Transfer/sec: 78.64MB
--- node (createServer) ---
jlong-16106:~/tmp/wrk(master)% ./wrk -t12 -c400 -d30s http://127.0.0.1:4000/
Running 30s test @ http://127.0.0.1:4000/
12 threads and 400 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 21.80ms 2.07ms 68.88ms 86.38%
Req/Sec 1.49k 128.55 3.71k 91.58%
535374 requests in 30.06s, 1.63GB read
Socket errors: connect 0, read 276, write 0, timeout 0
Requests/sec: 17809.70
Transfer/sec: 55.62MB
--- node (express) ---
jlong-16106:~/tmp/wrk(master)% ./wrk -t12 -c400 -d30s http://127.0.0.1:4000/
Running 30s test @ http://127.0.0.1:4000/
12 threads and 400 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 54.69ms 6.49ms 153.56ms 83.86%
Req/Sec 586.63 76.14 840.00 80.32%
210525 requests in 30.09s, 677.81MB read
Socket errors: connect 0, read 285, write 0, timeout 0
Requests/sec: 6996.23
Transfer/sec: 22.53MB
const http = require("http");
const str = `
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ut maximus quam. Morbi felis mauris, ullamcorper eu efficitur a, faucibus in erat. Curabitur efficitur sed purus at facilisis. Cras mi est, suscipit sit amet nunc ut, consectetur consectetur elit. Donec accumsan, magna in interdum consequat, sapien ipsum elementum enim, vitae sollicitudin nibh ipsum at ante. Aliquam ultrices scelerisque pulvinar. Nunc a lacinia velit. Morbi ornare, ante in cursus semper, lorem nulla pharetra augue, ac luctus risus nunc id odio. Duis lacinia quam vel nulla blandit tincidunt a vitae risus. Pellentesque in pharetra risus, ut viverra augue. In scelerisque sodales nisl, quis lobortis nisl posuere ac. Curabitur consequat neque dolor.
Aliquam et neque molestie, dictum nulla eu, feugiat lectus. Etiam sit amet mollis eros. Quisque nibh eros, pellentesque eu nibh in, lobortis tempus eros. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur scelerisque purus porta, maximus est at, dictum nisi. Nullam auctor est finibus placerat suscipit. Ut auctor condimentum libero dignissim molestie. Nullam gravida velit augue, id semper dolor scelerisque in. Suspendisse gravida sit amet tortor eu commodo. Aliquam rutrum lacus magna. Ut dictum, libero in auctor porttitor, eros mauris porttitor mi, eleifend bibendum metus leo sit amet enim. Sed id magna sollicitudin, hendrerit est ut, tincidunt libero. Donec semper eros elit, vitae pulvinar velit auctor eget. Aenean euismod eros lacus, vel eleifend augue consectetur semper.
Donec malesuada vehicula velit sit amet cursus. Nunc sed tempus ligula. Phasellus vulputate, felis in aliquam mattis, metus ex tristique nisi, sit amet molestie diam nisl quis urna. Suspendisse lacinia feugiat turpis, quis luctus risus dignissim ac. Sed ut felis quis lectus volutpat tincidunt vitae at neque. Mauris ac ultrices velit, sed facilisis ex. In a lacinia lacus. Proin augue augue, rutrum a scelerisque vitae, condimentum sed lorem. Donec consectetur convallis arcu, quis maximus sem euismod sed. Aenean interdum sagittis massa id venenatis. Curabitur faucibus vel lacus porta lacinia.
Nulla cursus, mi eget venenatis imperdiet, est tellus consequat eros, lobortis convallis purus purus eu ligula. Mauris et imperdiet justo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nunc suscipit nisi et purus eleifend consectetur. Aenean vel lorem ex. Vivamus sed massa in sapien eleifend ultricies. Integer convallis quis nulla et feugiat. Ut vestibulum, felis et egestas vehicula, eros tellus suscipit leo, in tincidunt metus massa eu ligula. Donec odio nisl, malesuada a tellus a, facilisis interdum tortor.
Maecenas convallis, purus ut faucibus molestie, odio tellus mattis nunc, sit amet sodales massa ligula porttitor magna. Nullam finibus arcu est, ut tincidunt dui tristique et. Nullam bibendum ligula augue, at rhoncus justo rutrum sed. Donec commodo maximus dictum. Nam ultrices urna vitae quam sollicitudin accumsan. Suspendisse potenti. Sed id sodales mi, quis finibus erat. Donec sed gravida sem. Phasellus vitae maximus nulla. Vestibulum sed orci augue. Mauris at consectetur purus, vitae porttitor nisi.
`;
var server = http.createServer(function(request, response) {
response.end(str);
});
server.listen(4000);
const express = require("express");
const app = express();
const str = `
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ut maximus quam. Morbi felis mauris, ullamcorper eu efficitur a, faucibus in erat. Curabitur efficitur sed purus at facilisis. Cras mi est, suscipit sit amet nunc ut, consectetur consectetur elit. Donec accumsan, magna in interdum consequat, sapien ipsum elementum enim, vitae sollicitudin nibh ipsum at ante. Aliquam ultrices scelerisque pulvinar. Nunc a lacinia velit. Morbi ornare, ante in cursus semper, lorem nulla pharetra augue, ac luctus risus nunc id odio. Duis lacinia quam vel nulla blandit tincidunt a vitae risus. Pellentesque in pharetra risus, ut viverra augue. In scelerisque sodales nisl, quis lobortis nisl posuere ac. Curabitur consequat neque dolor.
Aliquam et neque molestie, dictum nulla eu, feugiat lectus. Etiam sit amet mollis eros. Quisque nibh eros, pellentesque eu nibh in, lobortis tempus eros. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur scelerisque purus porta, maximus est at, dictum nisi. Nullam auctor est finibus placerat suscipit. Ut auctor condimentum libero dignissim molestie. Nullam gravida velit augue, id semper dolor scelerisque in. Suspendisse gravida sit amet tortor eu commodo. Aliquam rutrum lacus magna. Ut dictum, libero in auctor porttitor, eros mauris porttitor mi, eleifend bibendum metus leo sit amet enim. Sed id magna sollicitudin, hendrerit est ut, tincidunt libero. Donec semper eros elit, vitae pulvinar velit auctor eget. Aenean euismod eros lacus, vel eleifend augue consectetur semper.
Donec malesuada vehicula velit sit amet cursus. Nunc sed tempus ligula. Phasellus vulputate, felis in aliquam mattis, metus ex tristique nisi, sit amet molestie diam nisl quis urna. Suspendisse lacinia feugiat turpis, quis luctus risus dignissim ac. Sed ut felis quis lectus volutpat tincidunt vitae at neque. Mauris ac ultrices velit, sed facilisis ex. In a lacinia lacus. Proin augue augue, rutrum a scelerisque vitae, condimentum sed lorem. Donec consectetur convallis arcu, quis maximus sem euismod sed. Aenean interdum sagittis massa id venenatis. Curabitur faucibus vel lacus porta lacinia.
Nulla cursus, mi eget venenatis imperdiet, est tellus consequat eros, lobortis convallis purus purus eu ligula. Mauris et imperdiet justo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nunc suscipit nisi et purus eleifend consectetur. Aenean vel lorem ex. Vivamus sed massa in sapien eleifend ultricies. Integer convallis quis nulla et feugiat. Ut vestibulum, felis et egestas vehicula, eros tellus suscipit leo, in tincidunt metus massa eu ligula. Donec odio nisl, malesuada a tellus a, facilisis interdum tortor.
Maecenas convallis, purus ut faucibus molestie, odio tellus mattis nunc, sit amet sodales massa ligula porttitor magna. Nullam finibus arcu est, ut tincidunt dui tristique et. Nullam bibendum ligula augue, at rhoncus justo rutrum sed. Donec commodo maximus dictum. Nam ultrices urna vitae quam sollicitudin accumsan. Suspendisse potenti. Sed id sodales mi, quis finibus erat. Donec sed gravida sem. Phasellus vitae maximus nulla. Vestibulum sed orci augue. Mauris at consectetur purus, vitae porttitor nisi.
`;
app.get("/", function(req, res) {
res.send(str);
});
app.listen(4000);
open Lwt;
open Cohttp;
open Cohttp_lwt_unix;
let module Util = Yojson.Basic.Util;
let str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ut maximus quam. Morbi felis mauris, ullamcorper eu efficitur a, faucibus in erat. Curabitur efficitur sed purus at facilisis. Cras mi est, suscipit sit amet nunc ut, consectetur consectetur elit. Donec accumsan, magna in interdum consequat, sapien ipsum elementum enim, vitae sollicitudin nibh ipsum at ante. Aliquam ultrices scelerisque pulvinar. Nunc a lacinia velit. Morbi ornare, ante in cursus semper, lorem nulla pharetra augue, ac luctus risus nunc id odio. Duis lacinia quam vel nulla blandit tincidunt a vitae risus. Pellentesque in pharetra risus, ut viverra augue. In scelerisque sodales nisl, quis lobortis nisl posuere ac. Curabitur consequat neque dolor.\nAliquam et neque molestie, dictum nulla eu, feugiat lectus. Etiam sit amet mollis eros. Quisque nibh eros, pellentesque eu nibh in, lobortis tempus eros. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur scelerisque purus porta, maximus est at, dictum nisi. Nullam auctor est finibus placerat suscipit. Ut auctor condimentum libero dignissim molestie. Nullam gravida velit augue, id semper dolor scelerisque in. Suspendisse gravida sit amet tortor eu commodo. Aliquam rutrum lacus magna. Ut dictum, libero in auctor porttitor, eros mauris porttitor mi, eleifend bibendum metus leo sit amet enim. Sed id magna sollicitudin, hendrerit est ut, tincidunt libero. Donec semper eros elit, vitae pulvinar velit auctor eget. Aenean euismod eros lacus, vel eleifend augue consectetur semper.\nDonec malesuada vehicula velit sit amet cursus. Nunc sed tempus ligula. Phasellus vulputate, felis in aliquam mattis, metus ex tristique nisi, sit amet molestie diam nisl quis urna. Suspendisse lacinia feugiat turpis, quis luctus risus dignissim ac. Sed ut felis quis lectus volutpat tincidunt vitae at neque. Mauris ac ultrices velit, sed facilisis ex. In a lacinia lacus. Proin augue augue, rutrum a scelerisque vitae, condimentum sed lorem. Donec consectetur convallis arcu, quis maximus sem euismod sed. Aenean interdum sagittis massa id venenatis. Curabitur faucibus vel lacus porta lacinia.\nNulla cursus, mi eget venenatis imperdiet, est tellus consequat eros, lobortis convallis purus purus eu ligula. Mauris et imperdiet justo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nunc suscipit nisi et purus eleifend consectetur. Aenean vel lorem ex. Vivamus sed massa in sapien eleifend ultricies. Integer convallis quis nulla et feugiat. Ut vestibulum, felis et egestas vehicula, eros tellus suscipit leo, in tincidunt metus massa eu ligula. Donec odio nisl, malesuada a tellus a, facilisis interdum tortor.\nMaecenas convallis, purus ut faucibus molestie, odio tellus mattis nunc, sit amet sodales massa ligula porttitor magna. Nullam finibus arcu est, ut tincidunt dui tristique et. Nullam bibendum ligula augue, at rhoncus justo rutrum sed. Donec commodo maximus dictum. Nam ultrices urna vitae quam sollicitudin accumsan. Suspendisse potenti. Sed id sodales mi, quis finibus erat. Donec sed gravida sem. Phasellus vitae maximus nulla. Vestibulum sed orci augue. Mauris at consectetur purus, vitae porttitor nisi. ";
let callback _conn req body => Server.respond_string status::`OK body::str ();
let server = Server.create mode::(`TCP (`Port 8000)) (Server.make callback::callback ());
ignore (Lwt_main.run server);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment