openwhisk-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michele Sciabarra <>
Subject Performance Comparison of Runtimes and Improvements on the ActionLoop Runtime
Date Sat, 24 Nov 2018 14:25:50 GMT
Hello all, 

last week I discovered that, while the Python runtime is pretty slow and using an ActionLoop
runtime improves Python a lot, the NodeJS runtime is damn fast, and the ActionLoop/GoLang
runtime is way behind it.

So I tried to understand what is going on and why there is so much difference between ActionLoop
and NodeJS
Most notably I decided to try to get rid of GoRoutines and just to launch a subprocess from
an HTTP server  and feed data to it.
Hence I wrote a quick-and-dirty prototype to see how fast I can go.

Those are the numbers, comparing raw performances of runtimes.

I measured performances in a similar environment. I run all the tests in Docker for Mac on
a recent MacBook Pro,
using an "hello" action using the command 'wrk -t1 -c1 http://locahost:8080/run' that run
a single thread single connection test for 10 seconds. 

*** nodejs6action
Requests/sec:   1181.36
Transfer/sec:    264.19KB
*** python3action
Requests/sec:     19.80
Transfer/sec:      2.58KB
*** actionloop-golang-v1.11
Requests/sec:     83.80
Transfer/sec:     11.95KB
*** PROTO new actionloop-golang-v1.11
Requests/sec:   1031.38
Transfer/sec:    175.25KB
and this is the current

So while NodeJS will stay faster at 1181 req/sec (well, for a number of reasons), with ActionLoop
(that can work with every language) we can get close at 1031 req/sec

Now I have to work in the runtime to implement the changes I made to the prototype

  Michele Sciabarra

View raw message