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: