Skip to content
A performance shootout for REST libraries and frameworks
Scala Other
Failed to load latest commit information.
blueeyes put everything on port 9000 to share a single load-test.jmx Sep 17, 2012
finagle put everything on port 9000 to share a single load-test.jmx Sep 17, 2012
finatra update fo finatra 1.1 Nov 26, 2012
lift put everything on port 9000 to share a single load-test.jmx Sep 17, 2012
node.js use the cluster module for multicore goodness Nov 27, 2012
pinky
play2-mini put everything on port 9000 to share a single load-test.jmx Sep 17, 2012
play2 Allow 75 simultaneous blocking akka futures in the play2 project Oct 28, 2012
readme use the cluster module for multicore goodness Nov 27, 2012
rubble add Rubble Nov 26, 2012
scalatra break servlet-3.0 examples into separate subprojects Sep 17, 2012
servlet-3.0-async break servlet-3.0 examples into separate subprojects Sep 17, 2012
servlet-3.0 fix build for servlet-3.0 Oct 26, 2012
spray add spray/master Nov 26, 2012
.gitignore add node.js example Sep 14, 2012
README.md add Rubble Nov 26, 2012
fast-test.jmx break servlet-3.0 examples into separate subprojects Sep 17, 2012
load-test.jmx break servlet-3.0 examples into separate subprojects Sep 17, 2012

README.md

Scamper is a collection of RESTful libraries and frameworks, organized as a testbed for comparing the raw performance characteristics of each.

Each implementation exposes the same three endpoints:

  • GET /fast blocks for 0 ms
  • GET /medium blocks for 150 ms
  • GET /slow blocks for 300 ms

Each endpoint responds with <h1>slept for { duration } ms</h1>, where duration is the actual amount of time spent blocking.

Each implementation runs on localhost:9000 and can be tested with a variety of tools, such as weighttp or JMeter.

Test results

For full test results, see the Wiki.

Fast Test

Getting started

Download scamper

git clone git://github.com/Versal/scamper.git

Install JMeter

http://jmeter.apache.org/

Install Node.js

brew install nodejs
npm install -g express
(cd scamper/node.js ; npm link express)

Install sbt (0.12.0 or newer)

https://github.com/harrah/xsbt/wiki/Getting-Started-Setup

Run and test each implementation

Each server can be tested with JMeter or weighttp:

jmeter -n -t scamper/load-test.jmx
jmeter -n -t scamper/fast-test.jmx
weighttp -n 500000 -c 20 -t 4 -k http://localhost:9000/fast

BlueEyes

(cd scamper/blueeyes ; sbt "run --configFile blueeyes.config")

Finagle

(cd scamper/finagle ; sbt run)

Lift

(cd scamper/lift ; sbt run)

Pinky

(cd scamper/pinky ; sbt update run)

Play 2.0

(cd scamper/play2 ; sbt start)

Play 2.0 mini

(cd scamper/play2-mini ; sbt run)

spray-can

(cd scamper/spray ; sbt "project simple-http-server" run)

Servlet 3.0

(cd scamper/servlet-3.0 ; sbt run)

Asynchronous Servlet 3.0

(cd scamper/servlet-3.0-async ; sbt run)

Scalatra

(cd scamper/scalatra ; sbt run)

Node.js

(ulimit -n 4096 ; cd scamper/node.js ; node app.js)

Finatra

(cd scamper/finatra ; sbt run)

Rubble

(cd scamper/rubble ; sbt run)
Something went wrong with that request. Please try again.