Octane sub-scores and overall score. Higher is better, highest of 10 runs. Omits a few Octane tests which fail to run (see Duktape repo tests/octane).
Test | duk.O2.240 | duk.O2.230 |
---|---|---|
Box2D | 511 | 516 |
CodeLoad | 4802 | 4469 |
Crypto | 154 | 155 |
DeltaBlue | 129 | 130 |
EarleyBoyer | 311 | 310 |
Gameboy | 881 | 885 |
NavierStokes | 358 | 354 |
PdfJS | 484 | 482 |
RayTrace | 277 | 271 |
Richards | 107 | 109 |
Splay | 770 | 775 |
SplayLatency | 4364 | 4388 |
SCORE | 498 | 495 |
Baseline is duk.O2.230, compared to duk.O2.240. Lower is better, lowest of 5 runs.
duk.O2.240 | duk.O2.230 | |
---|---|---|
test-add-fastint | 1.80 | 1.78 |
test-add-float | 1.78 | 1.78 |
test-add-int | 1.77 | 1.83 |
test-add-nan-fastint | 1.80 | 1.79 |
test-add-nan | 1.78 | 1.78 |
test-add-string | 25.93 | 25.67 |
test-arith-add | 7.18 | 7.06 |
test-arith-add-string | 2.59 | 2.57 |
test-arith-div | 10.16 | 10.45 |
test-arith-mod | 9.54 | 9.49 |
test-arith-mul | 7.99 | 7.80 |
test-arith-sub | 7.06 | 7.21 |
test-array-append | 1.47 | 1.44 |
test-array-cons-list | 1.04 | 1.03 |
test-array-foreach | (4.00) | 3.86 |
test-array-literal-100 | 4.28 | 4.22 |
test-array-literal-20 | 1.03 | 1.03 |
test-array-literal-3 | (0.47) | 0.45 |
test-array-pop | 2.96 | 2.97 |
test-array-push | 3.22 | 3.14 |
test-array-read | 4.80 | 4.71 |
test-array-read-lenloop | 5.52 | 5.42 |
test-array-sort | (5.27) | 4.99 |
test-array-write | 4.54 | 4.50 |
test-array-write-length | 4.32 | 4.34 |
test-assign-add | (11.66) | 11.19 |
test-assign-addto | (11.61) | 11.22 |
test-assign-addto-nan | 2.84 | 2.85 |
test-assign-boolean | (10.11) | 9.75 |
test-assign-const-int2 | 20.39 | 20.93 |
test-assign-const-int | 10.21 | 10.69 |
test-assign-const | 10.15 | 10.50 |
test-assign-literal | 12.18 | 11.87 |
test-assign-proplhs-reg | (6.23) | 5.95 |
test-assign-proprhs | 7.11 | 7.00 |
test-assign-reg | 10.02 | 10.12 |
test-base64-decode | 1.12 | 1.13 |
test-base64-decode-whitespace | 1.35 | 1.37 |
test-base64-encode | 1.31 | 1.32 |
test-bitwise-ops | 5.10 | 5.04 |
test-break-fast | 3.65 | 3.64 |
test-break-slow | 15.80 | 15.92 |
test-buffer-float32array-write | 9.44 | 9.56 |
test-buffer-nodejs-read | 6.79 | 6.82 |
test-buffer-nodejs-write | 8.65 | 8.82 |
test-buffer-object-read | 6.82 | 6.83 |
test-buffer-object-write | 8.63 | 8.81 |
test-buffer-plain-read | (5.27) | 4.96 |
test-buffer-plain-write | 4.91 | 5.01 |
test-call-apply | 4.06 | 4.07 |
test-call-basic-1 | 10.52 | 10.23 |
test-call-basic-2 | 10.50 | 10.26 |
test-call-basic-3 | 12.58 | 12.74 |
test-call-basic-4 | 27.13 | 28.46 |
test-call-bound-deep | 4.33 | 4.31 |
test-call-bound | 4.20 | 4.17 |
test-call-call | 3.64 | 3.55 |
test-call-closure-1 | 2.94 | 2.93 |
test-call-native | (20.84) | 19.69 |
test-call-prop | 7.16 | 7.02 |
test-call-proxy-apply-1 | 44.90 | 44.40 |
test-call-proxy-pass-1 | 22.91 | 22.63 |
test-call-reg | 4.26 | 4.16 |
test-call-reg-new | 7.70 | 7.57 |
test-call-tail-1 | (2.06) | 1.99 |
test-call-tail-2 | (2.20) | 2.13 |
test-call-var | (9.48) | 8.95 |
test-cbor-decode-1 | 3.71 | 3.72 |
test-cbor-decode-2 | 7.02 | 7.07 |
test-cbor-decode-3 | (10.10) | 9.80 |
test-cbor-decode-fastints | 1.11 | 1.10 |
test-cbor-decode-largeobj | 3.31 | 3.34 |
test-cbor-decode-strings | 1.34 | 1.34 |
test-cbor-encode-1 | 9.12 | 9.69 |
test-cbor-encode-2 | 13.81 | 14.72 |
test-cbor-encode-3 | 9.86 | 10.57 |
test-cbor-encode-double | 0.94 ▲ | 1.06 |
test-cbor-encode-float | 0.95 ▲ | 1.07 |
test-cbor-encode-half-float | 0.99 | 1.03 |
test-cbor-encode-largeobj | 6.12 ⇑ | 6.62 |
test-cbor-encode-largestr | 1.49 ▲ | 2.19 |
test-cbor-encode-simple | 4.12 | 4.38 |
test-closure-inner-functions | 1.46 ▲ | 1.76 |
test-compile-mandel | 20.67 | 20.80 |
test-compile-mandel-nofrac | 14.00 | 14.17 |
test-compile-short | 7.09 | 7.32 |
test-compile-string-ascii | 9.54 | 9.59 |
test-continue-fast | 5.62 | 5.62 |
test-continue-slow | 17.82 | 17.90 |
test-empty-loop | 6.36 | 6.45 |
test-empty-loop-slowpath | 2.06 | 2.03 |
test-empty-loop-step3 | 6.39 | 6.54 |
test-enum-basic | 5.11 | 5.46 |
test-equals-fastint | (1.53) | 1.48 |
test-equals-nonfastint | 1.55 | 1.53 |
test-error-create | 2.36 | 2.36 |
test-fib-2 | 5.53 | 5.50 |
test-fib | 9.29 | 9.07 |
test-func-bind | 2.88 | 2.84 |
test-func-tostring | 5.64 | 5.56 |
test-global-lookup | (12.30) | 11.91 |
test-hello-world | 0.00 | 0.00 |
test-hex-decode | 2.73 | 2.73 |
test-hex-encode | 2.22 | 2.18 |
test-jc-serialize-indented | 5.16 | 5.18 |
test-jc-serialize | 2.97 | 2.95 |
test-json-parse-hex | 2.58 | 2.58 |
test-json-parse-integer | 4.24 | 4.32 |
test-json-parse-number | 8.66 | 8.49 |
test-json-parse-string | 3.00 | 3.00 |
test-json-serialize-fastpath-loop | 5.39 | 5.34 |
test-json-serialize-forceslow | 10.69 | 10.78 |
test-json-serialize-hex | 1.09 | 1.10 |
test-json-serialize-indented-deep100 | 2.00 | 1.95 |
test-json-serialize-indented-deep25 | 5.03 | 5.09 |
test-json-serialize-indented-deep500 | 1.26 | 1.24 |
test-json-serialize-indented | 9.28 | 9.31 |
test-json-serialize-jsonrpc-message | 1.38 | 1.38 |
test-json-serialize-largeobj | 5.27 | 5.14 |
test-json-serialize-nofrac | 0.89 | 0.88 |
test-json-serialize-plainbuf | 4.67 | 4.58 |
test-json-serialize-simple | 6.80 | 6.72 |
test-json-serialize-slowpath-loop | 5.26 | 5.31 |
test-json-string-bench | 4.80 | 4.71 |
test-json-string-stringify | 4.20 | 4.23 |
test-jx-serialize-bufobj-forceslow | 5.52 | 5.51 |
test-jx-serialize-bufobj | 1.64 | 1.65 |
test-jx-serialize-indented | 5.13 | 5.16 |
test-jx-serialize | 2.95 | 2.96 |
test-mandel-iter10-normal | 0.08 ▲ | 0.09 |
test-mandel-iter10-promise | - | - |
test-mandel | 8.71 | 8.76 |
test-mandel-promise | - | - |
test-math-clz32 | 4.08 | 3.97 |
test-misc-1dcell | 7.91 | 7.69 |
test-object-garbage-2 | 3.70 | 3.76 |
test-object-garbage | 7.38 | 7.40 |
test-object-literal-100 | 10.69 | 10.84 |
test-object-literal-20 | 2.36 | 2.39 |
test-object-literal-3 | 0.57 | 0.58 |
test-prop-read-1024 | 7.85 | 7.71 |
test-prop-read-16 | 7.84 | 7.70 |
test-prop-read-256 | 7.85 | 7.70 |
test-prop-read-32 | 7.82 | 7.70 |
test-prop-read-48 | 7.84 | 7.69 |
test-prop-read-4 | 7.88 | 7.72 |
test-prop-read-64 | 7.82 | 7.69 |
test-prop-read-8 | 7.82 | 7.70 |
test-prop-read-inherited | 9.85 | 9.78 |
test-prop-read | 7.92 | 7.75 |
test-prop-write-1024 | 6.93 | 6.84 |
test-prop-write-16 | 6.93 | 6.82 |
test-prop-write-256 | 6.95 | 6.82 |
test-prop-write-32 | 6.93 | 6.82 |
test-prop-write-48 | 6.94 | 6.83 |
test-prop-write-4 | 7.01 | 6.85 |
test-prop-write-64 | 6.92 | 6.81 |
test-prop-write-8 | 6.93 | 6.80 |
test-prop-write | 7.02 | 6.88 |
test-proxy-get | 2.86 | 2.80 |
test-random | (2.78) | 2.62 |
test-reflect-ownkeys-sorted | 1.32 | 1.30 |
test-reflect-ownkeys-unsorted | 1.36 | 1.36 |
test-regexp-case-insensitive-compile | (0.84) ▼ | 0.74 |
test-regexp-case-insensitive-execute | (2.50) | 2.37 |
test-regexp-case-sensitive-compile | (2.04) | 1.98 |
test-regexp-case-sensitive-execute | 2.00 | 2.02 |
test-regexp-compile | 2.84 | 2.82 |
test-regexp-execute | 2.34 | 2.35 |
test-regexp-string-parse | 13.52 | 13.59 |
test-reg-readwrite-object | 7.76 | 8.04 |
test-reg-readwrite-plain | 7.73 | 7.55 |
test-strict-equals-fastint | (1.61) | 1.55 |
test-strict-equals-nonfastint | 1.61 | 1.60 |
test-string-array-concat | 14.06 | 13.90 |
test-string-arridx | 2.67 | 2.64 |
test-string-charlen-ascii | 1.79 | 1.82 |
test-string-charlen-nonascii | 2.66 | 2.64 |
test-string-compare | 5.81 ▲ | 7.10 |
test-string-decodeuri | 9.04 | 8.83 |
test-string-encodeuri | 8.61 | 8.65 |
test-string-garbage | 5.96 | 5.91 |
test-string-intern-grow2 | 0.89 | 0.90 |
test-string-intern-grow | 7.52 | 7.50 |
test-string-intern-grow-short2 | 5.42 | 5.40 |
test-string-intern-grow-short | 5.53 | 5.54 |
test-string-intern-match | 0.26 | 0.26 |
test-string-intern-match-short | 2.10 | 2.11 |
test-string-intern-miss | (0.53) | 0.51 |
test-string-intern-miss-short | 2.59 | 2.58 |
test-string-literal-intern | 4.96 | 4.85 |
test-string-number-list | 0.85 | 0.83 |
test-string-plain-concat | 0.90 | 0.91 |
test-string-scan-nonascii | (4.64) ▼ | 4.20 |
test-string-uppercase | 4.39 | 4.35 |
test-symbol-tostring | 6.08 | 5.99 |
test-textdecoder-ascii | (4.18) | 3.98 |
test-textdecoder-nonascii | 2.85 | 2.77 |
test-textencoder-ascii | 13.24 | 13.30 |
test-textencoder-nonascii | 20.36 | 20.42 |
test-try-catch-nothrow | 7.83 | 7.91 |
test-try-catch-throw | 43.60 | 43.26 |
test-try-finally-nothrow | 9.76 | 9.76 |
test-try-finally-throw | 57.75 | 57.40 |
Measurement host:
- "Intel(R) Core(TM) i5-8600K CPU @ 3.60GHz" (Changed from previous performance test.)
Duktape is compiled with:
- gcc version 8.3.0 (Debian 8.3.0-6)
gcc -O2
- duk.O2: defaults + debugger and executor interrupt enabled, fastints enabled
Note that:
-
These are microbenchmarks, and don't necessarily represent application performance very well. Microbenchmarks are useful for measuring how well different parts of the engine work.
-
Only relative numbers matter. Loop counts differ between test cases so the numbers for two tests are not directly comparable. Absolute numbers may also change between test runs if test target is different.
-
The measurement process is not very accurate: it's based on running the test multiple times and measuring time using the
time
command.