Duktape 2.5.0 performance measurement

Octane

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.250 duk.O2.240 duk.O2.200 duk.O2.180
Box2D 508 524 474 351
CodeLoad 4451 4372 4237 3529
Crypto 270 155 138 121
DeltaBlue 130 131 115 85.8
EarleyBoyer 320 341 268 230
Gameboy 888 888 832 651
NavierStokes 357 356 319 288
PdfJS 494 491 350 286
RayTrace 286 284 196 174
Richards 107 108 96.3 70.0
Splay 790 773 572 549
SplayLatency 4379 4228 3103 3103
SCORE 524 501 416 350

Duktape microbenchmarks, comparison to 2.4.0

Baseline is duk.O2.240, compared to duk.O2.250 and older versions. Lower is better, lowest of 5 runs.

duk.O2.250 duk.O2.240 duk.O2.200 duk.O2.180 duk.O2.100
test-add-fastint 1.77 1.78 (1.91) ⇓ (1.94) ⇓ (4.82) ▼
test-add-float 1.71 1.76 (2.07) ▼ (1.96) ▼ (4.82) ▼
test-add-int 1.77 1.76 (2.02) ▼ (1.98) ▼ (4.82) ▼
test-add-nan-fastint 1.80 1.86 (2.04) ⇓ (2.06) ▼ (4.82) ▼
test-add-nan 1.71 1.76 (2.07) ▼ (1.96) ▼ (4.83) ▼
test-add-string 24.91 25.11 (30.39) ▼ (33.11) ▼ (38.68) ▼
test-arith-add 7.09 7.10 (7.72) ⇓ (7.74) ⇓ (19.26) ▼
test-arith-add-string 2.49 2.52 (3.03) ▼ (3.29) ▼ (3.85) ▼
test-arith-div 10.15 10.14 (10.61) (10.99) ⇓ (20.30) ▼
test-arith-mod 9.86 9.81 (10.88) ▼ (10.29) (26.75) ▼
test-arith-mul (8.15) 7.79 (8.50) ⇓ (8.78) ▼ (20.71) ▼
test-arith-sub 7.32 7.34 (8.38) ▼ (7.68) (20.62) ▼
test-array-append 1.49 1.53 (1.66) ⇓ (1.76) ▼ (6.10) ▼
test-array-cons-list 0.98 1.04 (1.41) ▼ (2.42) ▼ (4.34) ▼
test-array-foreach 4.02 4.01 (4.34) ⇓ (4.42) ▼ (7.16) ▼
test-array-literal-100 4.19 4.25 (9.76) ▼ (7.33) ▼ (13.42) ▼
test-array-literal-20 1.01 1.03 (2.40) ▼ (1.70) ▼ (3.40) ▼
test-array-literal-3 0.44 0.46 (0.79) ▼ (0.74) ▼ (1.34) ▼
test-array-pop (3.05) 2.96 (3.96) ▼ (10.61) ▼ (14.83) ▼
test-array-push 3.25 3.27 (3.96) ▼ (7.47) ▼ (12.72) ▼
test-array-read 5.00 4.98 (5.34) ⇓ (5.78) ▼ (7.79) ▼
test-array-read-lenloop 5.72 5.64 (6.02) (7.01) ▼ (10.99) ▼
test-array-sort 5.22 5.40 5.47 5.55 (5.67)
test-array-write 4.42 4.51 (4.98) ▼ (5.86) ▼ (25.02) ▼
test-array-write-length 4.39 4.37 (4.71) ⇓ (6.86) ▼ (10.38) ▼
test-assign-add 11.26 11.51 (12.23) (12.19) (32.61) ▼
test-assign-addto 11.33 11.51 (12.19) (12.24) (32.82) ▼
test-assign-addto-nan 2.94 2.99 (3.34) ▼ (3.42) ▼ (7.98) ▼
test-assign-boolean 9.93 9.92 (11.64) ▼ (17.89) ▼ (44.53) ▼
test-assign-const-int2 20.14 20.50 (22.85) ▼ (21.63) (49.38) ▼
test-assign-const-int (10.09) ⇓ 9.34 (11.27) ▼ (10.25) ⇓ (37.87) ▼
test-assign-const 10.38 10.30 (11.91) ▼ (10.68) (38.06) ▼
test-assign-literal 12.35 12.54 (14.08) ▼ (19.90) ▼ (45.96) ▼
test-assign-proplhs-reg 6.04 6.09 (6.54) ⇓ (8.65) ▼ (9.09) ▼
test-assign-proprhs 7.10 7.07 7.11 (9.97) ▼ (13.44) ▼
test-assign-reg 10.19 9.92 (12.12) ▼ (10.72) ⇓ (20.36) ▼
test-base64-decode 1.13 1.13 (1.24) ⇓ - -
test-base64-decode-whitespace 1.37 1.39 (1.45) - -
test-base64-encode 1.27 1.28 (1.42) ▼ - -
test-bitwise-ops 5.07 5.10 (5.86) ▼ (8.64) ▼ (58.02) ▼
test-break-fast 3.72 3.68 (5.20) ▼ (6.11) ▼ (6.49) ▼
test-break-slow 16.05 15.76 (18.60) ▼ (21.34) ▼ (28.92) ▼
test-buffer-float32array-write 9.32 9.38 9.61 (9.78) -
test-buffer-nodejs-read 6.81 6.87 (7.27) (7.58) ▼ -
test-buffer-nodejs-write 8.63 8.69 (9.01) 8.63 -
test-buffer-object-read 6.89 6.90 (7.29) (7.61) ▼ -
test-buffer-object-write 8.63 8.67 (8.99) 8.64 -
test-buffer-plain-read 5.14 5.23 (5.44) (5.79) ▼ -
test-buffer-plain-write 4.72 4.77 (5.38) ▼ 4.89 -
test-call-apply 4.03 3.99 (7.25) ▼ (8.53) ▼ (11.48) ▼
test-call-basic-1 10.40 10.59 (12.76) ▼ (15.20) ▼ (25.15) ▼
test-call-basic-2 10.41 10.67 (12.69) ▼ (15.22) ▼ (26.17) ▼
test-call-basic-3 12.34 12.29 (14.57) ▼ (21.25) ▼ (33.55) ▼
test-call-basic-4 (27.22) 26.11 (30.09) ▼ (48.95) ▼ (75.03) ▼
test-call-bound-deep 4.15 4.23 (51.98) ▼ (61.94) ▼ (90.78) ▼
test-call-bound 4.06 4.14 (10.45) ▼ (10.66) ▼ (15.79) ▼
test-call-call 3.57 3.56 (5.37) ▼ (6.25) ▼ (8.57) ▼
test-call-closure-1 2.77 2.85 (5.00) ▼ (4.80) ▼ (7.18) ▼
test-call-native 20.39 20.35 (22.42) ▼ (22.50) ▼ (34.58) ▼
test-call-prop 7.14 7.13 (7.89) ▼ (10.05) ▼ (14.81) ▼
test-call-proxy-apply-1 43.54 44.95 - - -
test-call-proxy-pass-1 22.84 22.75 - - -
test-call-reg 4.15 4.22 (5.08) ▼ (6.08) ▼ (10.02) ▼
test-call-reg-new 7.65 7.61 (9.82) ▼ (10.00) ▼ (13.16) ▼
test-call-tail-1 2.01 2.03 (2.90) ▼ (3.05) ▼ (3.66) ▼
test-call-tail-2 2.22 2.26 (4.95) ▼ (5.02) ▼ (5.64) ▼
test-call-var 9.24 9.28 (11.85) ▼ (13.05) ▼ (17.37) ▼
test-cbor-decode-1 3.63 3.63 - - -
test-cbor-decode-2 6.67 6.88 - - -
test-cbor-decode-3 9.58 9.71 - - -
test-cbor-decode-fastints 1.07 1.06 - - -
test-cbor-decode-largeobj 3.18 3.21 - - -
test-cbor-decode-strings 1.31 1.31 - - -
test-cbor-encode-1 8.62 8.66 - - -
test-cbor-encode-2 13.04 13.43 - - -
test-cbor-encode-3 9.90 10.61 - - -
test-cbor-encode-double 0.95 ⇑ 1.03 - - -
test-cbor-encode-float 0.94 1.01 - - -
test-cbor-encode-half-float 0.96 1.02 - - -
test-cbor-encode-largeobj 5.82 5.96 - - -
test-cbor-encode-largestr 1.40 1.50 - - -
test-cbor-encode-simple 3.89 3.97 - - -
test-closure-inner-functions 1.40 1.45 (2.31) ▼ (2.48) ▼ (3.60) ▼
test-compile-mandel 21.05 21.32 21.66 (24.85) ▼ (32.26) ▼
test-compile-mandel-nofrac 14.27 14.40 (15.43) ⇓ (18.30) ▼ (26.00) ▼
test-compile-short 6.87 7.06 (9.03) ▼ (11.44) ▼ (16.40) ▼
test-compile-string-ascii 9.18 9.21 9.20 (15.05) ▼ (23.77) ▼
test-continue-fast 5.79 5.74 (7.42) ▼ (8.19) ▼ (8.91) ▼
test-continue-slow 18.14 17.79 (21.03) ▼ (23.29) ▼ (31.78) ▼
test-empty-loop 6.57 6.44 (7.10) ▼ (7.53) ▼ (17.73) ▼
test-empty-loop-slowpath (2.04) 1.96 (3.14) ▼ (3.69) ▼ (4.55) ▼
test-empty-loop-step3 6.59 6.45 (7.18) ▼ (7.63) ▼ (12.74) ▼
test-enum-basic 4.91 4.90 (6.52) ▼ (6.80) ▼ (8.74) ▼
test-equals-fastint 1.51 1.49 (1.65) ▼ (2.72) ▼ (3.54) ▼
test-equals-nonfastint 1.56 1.56 (1.71) ⇓ (2.66) ▼ (3.52) ▼
test-error-create 2.27 2.34 (3.07) ▼ (3.85) ▼ (5.85) ▼
test-fib-2 5.53 5.59 (6.43) ▼ (7.43) ▼ (12.18) ▼
test-fib 9.17 9.22 (11.04) ▼ (12.16) ▼ (16.68) ▼
test-func-bind 2.80 2.81 (5.40) ▼ (4.16) ▼ (6.50) ▼
test-func-tostring 5.53 5.54 (6.04) ⇓ (6.94) ▼ (8.11) ▼
test-global-lookup 12.09 12.02 (15.62) ▼ (19.29) ▼ (22.61) ▼
test-hello-world 0.00 0.00 0.00 0.00 0.00
test-hex-decode 2.70 2.64 2.65 2.64 (7.03) ▼
test-hex-encode 1.94 1.97 1.95 - -
test-jc-serialize-indented 5.00 5.04 (5.42) ⇓ (5.85) ▼ (57.64) ▼
test-jc-serialize 2.85 2.86 (3.18) ▼ (3.57) ▼ (50.92) ▼
test-json-parse-hex 2.29 2.29 (3.31) ▼ - -
test-json-parse-integer 4.03 4.16 (5.00) ▼ (5.09) ▼ (5.31) ▼
test-json-parse-number 8.16 8.42 8.44 8.62 (8.72)
test-json-parse-string 3.20 3.18 (4.11) ▼ (3.55) ▼ (78.58) ▼
test-json-serialize-fastpath-loop 5.39 5.41 (6.07) ▼ (6.31) ▼ (54.05) ▼
test-json-serialize-forceslow (10.95) 10.50 (12.08) ▼ (12.35) ▼ (18.37) ▼
test-json-serialize-hex 1.07 1.07 1.07 - -
test-json-serialize-indented-deep100 1.89 1.92 (2.49) ▼ (2.89) ▼ (5.15) ▼
test-json-serialize-indented-deep25 4.97 5.02 (5.68) ▼ (5.82) ▼ (71.18) ▼
test-json-serialize-indented-deep500 1.23 1.20 (1.64) ▼ (1.83) ▼ (3.21) ▼
test-json-serialize-indented 9.24 9.16 (10.06) ⇓ (11.06) ▼ (112.84) ▼
test-json-serialize-jsonrpc-message 2.01 2.03 (2.42) ▼ (2.47) ▼ -
test-json-serialize-largeobj 5.15 5.27 5.29 (5.43) (18.84) ▼
test-json-serialize-nofrac 0.87 0.86 (0.96) ▼ (1.12) ▼ (11.62) ▼
test-json-serialize-plainbuf 4.59 4.54 (36.65) ▼ 0.23 ▲ -
test-json-serialize-simple (7.25) ⇓ 6.71 (7.41) ▼ 6.69 (18.52) ▼
test-json-serialize-slowpath-loop 5.08 5.15 (6.67) ▼ (7.77) ▼ (14.90) ▼
test-json-string-bench 4.63 4.71 (5.54) ▼ (7.79) ▼ (10.30) ▼
test-json-string-stringify 6.85 6.84 7.01 (7.13) (42.13) ▼
test-jx-serialize-bufobj-forceslow 5.38 5.40 (6.11) ▼ (7.20) ▼ -
test-jx-serialize-bufobj 1.61 1.61 (1.88) ▼ (2.08) ▼ -
test-jx-serialize-indented 5.23 5.27 (5.74) ⇓ (6.22) ▼ (57.99) ▼
test-jx-serialize 3.08 3.14 (3.36) ⇓ (3.79) ▼ (50.71) ▼
test-mandel-iter10-normal 0.08 0.08 (0.10) ▼ (0.12) ▼ (0.19) ▼
test-mandel-iter10-promise - - - - -
test-mandel 8.86 8.81 (10.20) ▼ (10.05) ▼ (18.97) ▼
test-mandel-promise - - - - -
test-math-clz32 4.08 3.98 - - -
test-misc-1dcell 8.07 8.12 (8.66) (9.34) ▼ (15.13) ▼
test-object-garbage-2 3.67 3.68 (6.96) ▼ (5.06) ▼ (8.64) ▼
test-object-garbage 7.25 7.52 7.58 (8.03) (8.89) ▼
test-object-literal-100 10.64 10.76 (21.85) ▼ (17.11) ▼ (25.25) ▼
test-object-literal-20 2.37 2.38 (3.82) ▼ (2.81) ▼ (4.82) ▼
test-object-literal-3 0.56 0.56 (0.88) ▼ (0.66) ▼ (1.14) ▼
test-prop-read-1024 7.88 7.84 7.99 (10.89) ▼ (15.58) ▼
test-prop-read-16 7.88 7.83 (8.36) (11.45) ▼ (15.52) ▼
test-prop-read-256 7.84 7.86 (8.12) (10.84) ▼ (15.25) ▼
test-prop-read-32 7.86 7.82 8.04 (10.94) ▼ (15.32) ▼
test-prop-read-48 7.87 7.86 7.98 (11.08) ▼ (15.36) ▼
test-prop-read-4 7.91 7.84 8.06 (10.88) ▼ (15.33) ▼
test-prop-read-64 7.88 7.93 (8.17) (10.84) ▼ (23.51) ▼
test-prop-read-8 7.85 7.84 (8.16) (10.98) ▼ (15.36) ▼
test-prop-read-inherited 10.00 9.83 (10.31) (13.35) ▼ (17.72) ▼
test-prop-read 8.14 7.92 8.12 (10.92) ▼ (15.36) ▼
test-prop-write-1024 6.86 6.86 (7.54) ⇓ (9.54) ▼ (10.86) ▼
test-prop-write-16 6.82 6.93 (7.76) ▼ (9.99) ▼ (11.29) ▼
test-prop-write-256 6.84 6.86 (7.38) ⇓ (9.52) ▼ (11.10) ▼
test-prop-write-32 6.85 6.86 (7.43) ⇓ (9.61) ▼ (10.88) ▼
test-prop-write-48 6.83 6.83 (7.36) ⇓ (10.08) ▼ (10.91) ▼
test-prop-write-4 6.82 6.82 (7.38) ⇓ (9.52) ▼ (10.92) ▼
test-prop-write-64 6.87 6.86 (7.38) ⇓ (9.92) ▼ (11.06) ▼
test-prop-write-8 6.87 6.86 (7.44) ⇓ (9.61) ▼ (11.06) ▼
test-prop-write 6.85 6.86 (7.42) ⇓ (9.51) ▼ (10.94) ▼
test-proxy-get 2.86 2.88 (3.32) ▼ (3.86) ▼ (5.29) ▼
test-random 2.80 2.78 (3.70) ▼ (6.76) ▼ (7.84) ▼
test-reflect-ownkeys-sorted 1.26 1.32 (1.74) ▼ - -
test-reflect-ownkeys-unsorted 1.32 1.32 (1.76) ▼ - -
test-regexp-case-insensitive-compile (0.85) 0.81 (30.70) ▼ (28.65) ▼ (28.23) ▼
test-regexp-case-insensitive-execute 2.48 2.48 (2.75) ▼ 2.53 (2.58)
test-regexp-case-sensitive-compile 1.91 1.97 (2.36) ▼ (2.46) ▼ (3.09) ▼
test-regexp-case-sensitive-execute 1.99 2.00 (2.37) ▼ (2.58) ▼ (3.14) ▼
test-regexp-compile 2.76 2.84 (3.24) ▼ (3.88) ▼ (4.65) ▼
test-regexp-execute 2.37 2.31 (2.74) ▼ (2.93) ▼ (3.31) ▼
test-regexp-string-parse 13.87 13.95 14.24 (25.07) ▼ (20.87) ▼
test-reg-readwrite-object 8.04 8.60 (10.24) ▼ 8.75 (21.20) ▼
test-reg-readwrite-plain 7.56 7.74 (9.17) ▼ 7.89 (18.38) ▼
test-strict-equals-fastint 1.53 1.53 (1.73) ▼ (2.70) ▼ (3.58) ▼
test-strict-equals-nonfastint 1.61 1.61 (1.80) ▼ (2.68) ▼ (3.58) ▼
test-string-array-concat 14.35 13.98 (14.60) (15.48) ▼ (37.83) ▼
test-string-arridx 2.55 2.60 (3.12) ▼ (3.40) ▼ (3.75) ▼
test-string-charlen-ascii 1.60 ⇑ 1.77 1.39 ▲ (2.27) ▼ (4.31) ▼
test-string-charlen-nonascii 2.56 2.56 2.46 (2.67) (3.26) ▼
test-string-compare 7.26 7.32 (7.80) (10.86) ▼ (14.69) ▼
test-string-decodeuri 9.40 9.38 9.32 9.33 (10.41) ▼
test-string-encodeuri 8.87 8.94 (9.33) 9.03 (15.28) ▼
test-string-garbage 5.58 5.71 (7.30) ▼ (8.08) ▼ (8.91) ▼
test-string-intern-grow2 0.87 0.87 (1.58) ▼ (1.80) ▼ -
test-string-intern-grow 7.62 7.62 (19.70) ▼ (21.73) ▼ -
test-string-intern-grow-short2 5.35 5.38 (6.85) ▼ (7.68) ▼ -
test-string-intern-grow-short 5.64 5.53 (14.30) ▼ (14.84) ▼ -
test-string-intern-match (0.26) 0.25 (0.30) ▼ (0.33) ▼ -
test-string-intern-match-short 2.08 2.08 (2.93) ▼ (3.32) ▼ -
test-string-intern-miss 0.51 0.52 (0.94) ▼ (1.01) ▼ -
test-string-intern-miss-short 2.52 2.54 (3.74) ▼ (3.99) ▼ -
test-string-literal-intern 4.83 4.84 (5.14) (5.49) ▼ -
test-string-number-list 0.82 0.82 (1.36) ▼ (1.74) ▼ (2.38) ▼
test-string-plain-concat 0.89 0.88 (1.28) ▼ (1.78) ▼ (3.45) ▼
test-string-scan-nonascii 4.81 4.81 4.90 (5.56) ▼ (6.98) ▼
test-string-uppercase (4.74) 4.56 (4.80) (4.78) (6.34) ▼
test-symbol-tostring 5.93 6.05 (8.61) ▼ - -
test-textdecoder-ascii 4.03 4.11 (4.29) - -
test-textdecoder-nonascii 2.92 2.88 (3.32) ▼ - -
test-textencoder-ascii 13.93 14.11 13.91 - -
test-textencoder-nonascii 20.24 20.69 20.30 - -
test-try-catch-nothrow 7.81 7.73 7.45 7.83 7.46
test-try-catch-throw 43.93 43.49 (62.06) ▼ (54.41) ▼ (68.55) ▼
test-try-finally-nothrow 10.02 9.83 9.75 (10.94) ▼ (10.25)
test-try-finally-throw 56.01 56.06 (76.40) ▼ (69.44) ▼ (80.24) ▼

Setup

Measurement host:

Duktape is compiled with:

Note that: