Duktape 2.4.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.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

Duktape microbenchmarks, comparison to 2.3.0

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

Setup

Measurement host:

Duktape is compiled with:

Note that: