GithubHelp home page GithubHelp logo

hbakhtiyor / node-frameworks-benchmark Goto Github PK

View Code? Open in Web Editor NEW
118.0 9.0 24.0 57 KB

Simple HTTP benchmark for different nodejs frameworks using wrk

Makefile 17.81% Shell 4.58% JavaScript 77.61%
benchmark wrk nodejs express feathers hapi koa micro restify uwebsockets sails totaljs

node-frameworks-benchmark's Introduction

Simple HTTP benchmark for different nodejs frameworks using wrk

Prerequisites

Installation

git clone [email protected]:hbakhtiyor/node-frameworks-benchmark.git && cd node-frameworks-benchmark
yarn [install]

How to run or automatically it can run after yarn install

make

After finish the make tasks, look at benchmarks.txt file or your console output.

Result of benchmarks without measuring cpu/memory usage

Simple HTTP benchmark results (wrk) with close connection

20220.47 Requests/sec - ukoa.js
13594.83 Requests/sec - ufeathers.js
12812.89 Requests/sec - uexpress.js
4204.16 Requests/sec - total/total.js
3043.56 Requests/sec - rawnode.js
2365.02 Requests/sec - feathers.js
2242.12 Requests/sec - koa.js
1784.28 Requests/sec - micro.js
1698.33 Requests/sec - express.js
1443.69 Requests/sec - restify.js
512.29 Requests/sec - hapi.js
158.26 Requests/sec - uws.js

Simple HTTP benchmark results (wrk) with keep-alive connection

54232.14 Requests/sec - uws.js
21036.52 Requests/sec - ukoa.js
13547.05 Requests/sec - ufeathers.js
13213.85 Requests/sec - micro.js
12514.36 Requests/sec - uexpress.js
12427.84 Requests/sec - rawnode.js
8597.81 Requests/sec - total/total.js
7594.78 Requests/sec - koa.js
5600.86 Requests/sec - express.js
4775.49 Requests/sec - restify.js
2959.22 Requests/sec - feathers.js
1215.46 Requests/sec - sails/sails.js
1077.86 Requests/sec - hapi.js

Hardware used

  • Intel® Core™ i3-2310M CPU @ 2.10GHz × 4
  • 4Gb RAM

Version

  • Node v7.9.0
  • Ubuntu 17.04 LTS x86_64 OS
  • 4.10.0-20-generic kernel

Notes

  • Some frameworks used with uWebSockets server.
  • This runs a benchmark for 5 minutes, using 12 threads, and keeping 400 HTTP connections open.

node-frameworks-benchmark's People

Contributors

chetverikov avatar hbakhtiyor avatar osher avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

node-frameworks-benchmark's Issues

uws examples are misleading

While using uws yields some good performance benefits, trying to actually use it results in some issues.

The first issue I came across, is a fairly important one. Trying to add response headers in both Express and Koa do nothing. All that comes back is the Content-length header, nothing else.

const http = require("uws").http;
// const http = require("http");

Koa:
ctx.set("Cache-Control", "no-cache");
ctx.body = "Hello World";

Express:
res.set("Cache-Control", "no-cache");
res.send("Hello World");

If you use the native http require, it works just fine. Because of this behavior, I don't think you can do a simple 1:1 comparison and have uws claim victory, when it's doing less work.

Perhaps I am doing something wrong, so please check for yourself and let me know if you see any way around this. I know that from digging around, the author of Total.js was going to try uws as well, but I believe realized it had this same issue ( https://blog.totaljs.com/blogs/news/20170530-new-total-js-framework-version-2-6/ - A support for another HTTP module )

nodejs 8

Great framework thanks. Any plan on adding benchmark comparisons for node 8 to your readme?

Please Update

Please update the NodeJS version to latest (9.x)

And please add the following self-acclaimed "high performance" frameworks

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.