Duktape 1.3.0 performance measurement

Measurement host:

Duktape is compiled with:

Note that:

Performance summary

Testcase duk 1.3.0 duk 1.2.3 duk 1.1.3 rhino lua 5.1 python perl ruby
test-array-read.js 4.13 5.62 7.96 0.99 1.19 5.64 5.34 4.41
test-array-write.js 4.37 6.04 22.21 1.59 1.38 6.30 5.32 6.89
test-bitwise-ops.js 0.85 1.11 5.06 8.41 n/a n/a n/a n/a
test-buffer-nodejs-read.js 4.61 n/a n/a n/a n/a n/a n/a n/a
test-buffer-nodejs-write.js 5.52 n/a n/a n/a n/a n/a n/a n/a
test-buffer-object-read.js 4.62 21.63 25.47 n/a n/a n/a n/a n/a
test-buffer-object-write.js 5.53 24.61 28.58 n/a n/a n/a n/a n/a
test-buffer-plain-read.js 4.24 5.25 7.70 n/a n/a n/a n/a n/a
test-buffer-plain-write.js 3.75 5.28 10.55 n/a n/a n/a n/a n/a
test-call-basic.js 14.42 15.52 20.05 3.87 2.41 9.02 9.70 6.24
test-compile-mandel-nofrac.js 13.21 16.52 18.38 7.54 n/a n/a n/a n/a
test-compile-mandel.js 16.32 19.49 21.45 7.58 n/a n/a n/a n/a
test-compile-short.js 10.17 9.91 11.07 4.11 n/a n/a n/a n/a
test-const-load.js 5.96 9.48 10.88 0.30 2.10 5.41 24.22 4.01
test-empty-loop.js 2.33 3.10 5.73 0.66 0.94 4.50 3.40 3.30
test-fib.js 8.57 9.39 9.77 1.22 1.32 2.39 6.39 1.51
test-global-lookup.js 9.98 10.59 11.52 1.22 n/a n/a n/a n/a
test-hello-world.js 0.00 0.00 0.00 0.23 0.00 0.00 0.00 0.00
test-hex-decode.js 5.30 5.30 9.30 n/a n/a 12.33 n/a n/a
test-hex-encode.js 26.28 26.32 28.56 n/a n/a 2.85 n/a n/a
test-json-integer-parse.js 0.41 0.42 0.41 1.07 n/a 0.07 n/a n/a
test-json-number-parse.js 5.09 4.98 5.23 1.58 n/a 0.29 n/a n/a
test-json-serialize.js 1.56 3.08 3.21 3.29 n/a 0.51 n/a n/a
test-json-string-bench.js 5.41 5.38 6.63 2.11 n/a n/a n/a n/a
test-json-string-parse.js 0.55 2.99 2.99 2.46 n/a n/a n/a n/a
test-json-string-stringify.js 1.23 3.53 3.50 6.15 n/a 0.48 n/a n/a
test-prop-read.js 7.58 8.48 12.00 1.07 1.24 6.17 6.86 14.56
test-prop-write.js 6.95 7.75 11.47 2.14 1.42 6.49 6.91 18.21
test-reg-load.js 2.75 4.29 5.29 0.30 2.25 5.70 n/a 4.04
test-reg-readwrite-object.js 3.72 5.33 7.03 0.34 1.72 4.72 28.35 3.87
test-reg-readwrite-plain.js 2.48 3.93 4.67 0.37 1.72 4.73 30.16 3.98
test-regexp-string-parse.js 10.51 12.59 12.43 n/a n/a 0.46 n/a n/a
test-string-array-concat.js 6.37 7.52 24.43 2.02 2.06 2.83 7.40 7.74
test-string-compare.js 3.76 4.56 6.07 5.67 2.80 4.85 16.13 5.30
test-string-decodeuri.js 3.54 4.10 4.02 1.91 n/a n/a n/a n/a
test-string-encodeuri.js 4.29 6.17 6.24 6.82 n/a n/a n/a n/a
test-string-intern-match.js 2.35 2.36 2.41 n/a n/a n/a n/a n/a
test-string-intern-miss.js 2.51 2.54 2.76 n/a n/a n/a n/a n/a
test-string-plain-concat.js 4.06 4.07 4.06 0.31 0.59 0.00 0.41 0.71
test-string-uppercase.js 2.55 3.28 3.26 2.55 n/a 1.21 n/a n/a

Raw results

for i in tests/perf/*.js; do \
        printf '%-30s:' "`basename $i`"; \
        printf ' duk.O2.130 %5s' "`python util/time_multi.py --count 5 --sleep 10 --mode min  ./duk.O2.130 $i`"; \
        printf ' duk.O2.123 %5s' "`python util/time_multi.py --count 5 --sleep 10 --mode min  ./duk.O2.123 $i`"; \
        printf ' duk.O2.113 %5s' "`python util/time_multi.py --count 5 --sleep 10 --mode min  ./duk.O2.113 $i`"; \
        printf ' rhino %5s' "`python util/time_multi.py --count 5 --sleep 10 --mode min  rhino $i`"; \
        printf ' lua %5s' "`python util/time_multi.py --count 5 --sleep 10 --mode min  lua ${i%%.js}.lua`"; \
        printf ' python %5s' "`python util/time_multi.py --count 5 --sleep 10 --mode min  python ${i%%.js}.py`"; \
        printf ' perl %5s' "`python util/time_multi.py --count 5 --sleep 10 --mode min  perl ${i%%.js}.pl`"; \
        printf ' ruby %5s' "`python util/time_multi.py --count 5 --sleep 10 --mode min  ruby ${i%%.js}.rb`"; \
        printf '\n'; \
    done
test-array-read.js            : duk.O2.130  4.13 duk.O2.123  5.62 duk.O2.113  7.96 rhino  0.99 lua  1.19 python  5.64 perl  5.34 ruby  4.41
test-array-write.js           : duk.O2.130  4.37 duk.O2.123  6.04 duk.O2.113 22.21 rhino  1.59 lua  1.38 python  6.30 perl  5.32 ruby  6.89
test-bitwise-ops.js           : duk.O2.130  0.85 duk.O2.123  1.11 duk.O2.113  5.06 rhino  8.41 lua   n/a python   n/a perl   n/a ruby   n/a
test-buffer-nodejs-read.js    : duk.O2.130  4.61 duk.O2.123   n/a duk.O2.113   n/a rhino   n/a lua   n/a python   n/a perl   n/a ruby   n/a
test-buffer-nodejs-write.js   : duk.O2.130  5.52 duk.O2.123   n/a duk.O2.113   n/a rhino   n/a lua   n/a python   n/a perl   n/a ruby   n/a
test-buffer-object-read.js    : duk.O2.130  4.62 duk.O2.123 21.63 duk.O2.113 25.47 rhino   n/a lua   n/a python   n/a perl   n/a ruby   n/a
test-buffer-object-write.js   : duk.O2.130  5.53 duk.O2.123 24.61 duk.O2.113 28.58 rhino   n/a lua   n/a python   n/a perl   n/a ruby   n/a
test-buffer-plain-read.js     : duk.O2.130  4.24 duk.O2.123  5.25 duk.O2.113  7.70 rhino   n/a lua   n/a python   n/a perl   n/a ruby   n/a
test-buffer-plain-write.js    : duk.O2.130  3.75 duk.O2.123  5.28 duk.O2.113 10.55 rhino   n/a lua   n/a python   n/a perl   n/a ruby   n/a
test-call-basic.js            : duk.O2.130 14.42 duk.O2.123 15.52 duk.O2.113 20.05 rhino  3.87 lua  2.41 python  9.02 perl  9.70 ruby  6.24
test-compile-mandel-nofrac.js : duk.O2.130 13.21 duk.O2.123 16.52 duk.O2.113 18.38 rhino  7.54 lua   n/a python   n/a perl   n/a ruby   n/a
test-compile-mandel.js        : duk.O2.130 16.32 duk.O2.123 19.49 duk.O2.113 21.45 rhino  7.58 lua   n/a python   n/a perl   n/a ruby   n/a
test-compile-short.js         : duk.O2.130 10.17 duk.O2.123  9.91 duk.O2.113 11.07 rhino  4.11 lua   n/a python   n/a perl   n/a ruby   n/a
test-const-load.js            : duk.O2.130  5.96 duk.O2.123  9.48 duk.O2.113 10.88 rhino  0.30 lua  2.10 python  5.41 perl 24.22 ruby  4.01
test-empty-loop.js            : duk.O2.130  2.33 duk.O2.123  3.10 duk.O2.113  5.73 rhino  0.66 lua  0.94 python  4.50 perl  3.40 ruby  3.30
test-fib.js                   : duk.O2.130  8.57 duk.O2.123  9.39 duk.O2.113  9.77 rhino  1.22 lua  1.32 python  2.39 perl  6.39 ruby  1.51
test-global-lookup.js         : duk.O2.130  9.98 duk.O2.123 10.59 duk.O2.113 11.52 rhino  1.22 lua   n/a python   n/a perl   n/a ruby   n/a
test-hello-world.js           : duk.O2.130  0.00 duk.O2.123  0.00 duk.O2.113  0.00 rhino  0.23 lua  0.00 python  0.00 perl  0.00 ruby  0.00
test-hex-decode.js            : duk.O2.130  5.30 duk.O2.123  5.30 duk.O2.113  9.30 rhino   n/a lua   n/a python 12.33 perl   n/a ruby   n/a
test-hex-encode.js            : duk.O2.130 26.28 duk.O2.123 26.32 duk.O2.113 28.56 rhino   n/a lua   n/a python  2.85 perl   n/a ruby   n/a
test-json-integer-parse.js    : duk.O2.130  0.41 duk.O2.123  0.42 duk.O2.113  0.41 rhino  1.07 lua   n/a python  0.07 perl   n/a ruby   n/a
test-json-number-parse.js     : duk.O2.130  5.09 duk.O2.123  4.98 duk.O2.113  5.23 rhino  1.58 lua   n/a python  0.29 perl   n/a ruby   n/a
test-json-serialize.js        : duk.O2.130  1.56 duk.O2.123  3.08 duk.O2.113  3.21 rhino  3.29 lua   n/a python  0.51 perl   n/a ruby   n/a
test-json-string-bench.js     : duk.O2.130  5.41 duk.O2.123  5.38 duk.O2.113  6.63 rhino  2.11 lua   n/a python   n/a perl   n/a ruby   n/a
test-json-string-parse.js     : duk.O2.130  0.55 duk.O2.123  2.99 duk.O2.113  2.99 rhino  2.46 lua   n/a python   n/a perl   n/a ruby   n/a
test-json-string-stringify.js : duk.O2.130  1.23 duk.O2.123  3.53 duk.O2.113  3.50 rhino  6.15 lua   n/a python  0.48 perl   n/a ruby   n/a
test-prop-read.js             : duk.O2.130  7.58 duk.O2.123  8.48 duk.O2.113 12.00 rhino  1.07 lua  1.24 python  6.17 perl  6.86 ruby 14.56
test-prop-write.js            : duk.O2.130  6.95 duk.O2.123  7.75 duk.O2.113 11.47 rhino  2.14 lua  1.42 python  6.49 perl  6.91 ruby 18.21
test-reg-load.js              : duk.O2.130  2.75 duk.O2.123  4.29 duk.O2.113  5.29 rhino  0.30 lua  2.25 python  5.70 perl   n/a ruby  4.04
test-reg-readwrite-object.js  : duk.O2.130  3.72 duk.O2.123  5.33 duk.O2.113  7.03 rhino  0.34 lua  1.72 python  4.72 perl 28.35 ruby  3.87
test-reg-readwrite-plain.js   : duk.O2.130  2.48 duk.O2.123  3.93 duk.O2.113  4.67 rhino  0.37 lua  1.72 python  4.73 perl 30.16 ruby  3.98
test-regexp-string-parse.js   : duk.O2.130 10.51 duk.O2.123 12.59 duk.O2.113 12.43 rhino   n/a lua   n/a python  0.46 perl   n/a ruby   n/a
test-string-array-concat.js   : duk.O2.130  6.37 duk.O2.123  7.52 duk.O2.113 24.43 rhino  2.02 lua  2.06 python  2.83 perl  7.40 ruby  7.74
test-string-compare.js        : duk.O2.130  3.76 duk.O2.123  4.56 duk.O2.113  6.07 rhino  5.67 lua  2.80 python  4.85 perl 16.13 ruby  5.30
test-string-decodeuri.js      : duk.O2.130  3.54 duk.O2.123  4.10 duk.O2.113  4.02 rhino  1.91 lua   n/a python   n/a perl   n/a ruby   n/a
test-string-encodeuri.js      : duk.O2.130  4.29 duk.O2.123  6.17 duk.O2.113  6.24 rhino  6.82 lua   n/a python   n/a perl   n/a ruby   n/a
test-string-intern-match.js   : duk.O2.130  2.35 duk.O2.123  2.36 duk.O2.113  2.41 rhino   n/a lua   n/a python   n/a perl   n/a ruby   n/a
test-string-intern-miss.js    : duk.O2.130  2.51 duk.O2.123  2.54 duk.O2.113  2.76 rhino   n/a lua   n/a python   n/a perl   n/a ruby   n/a
test-string-plain-concat.js   : duk.O2.130  4.06 duk.O2.123  4.07 duk.O2.113  4.06 rhino  0.31 lua  0.59 python  0.00 perl  0.41 ruby  0.71
test-string-uppercase.js      : duk.O2.130  2.55 duk.O2.123  3.28 duk.O2.113  3.26 rhino  2.55 lua   n/a python  1.21 perl   n/a ruby   n/a