Skip to content

Latest commit

 

History

History
299 lines (284 loc) · 26.8 KB

Performance230.md

File metadata and controls

299 lines (284 loc) · 26.8 KB

Duktape 2.3.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.230 duk.O2.220
Box2D 1005 994
CodeLoad 7386 7562
Crypto 311 297
DeltaBlue 232 232
EarleyBoyer 564 492
Gameboy 1818 1757
NavierStokes 775 779
PdfJS 910 918
RayTrace 427 429
Richards 181 178
Splay 1173 1163
SplayLatency 2753 3759
SCORE 823 830

Duktape microbenchmarks, comparison to 2.2.0

Baseline is duk.O2.220, compared to duk.O2.230. Lower is better, lowest of 5 runs.

duk.O2.230duk.O2.220
test-add-fastint0.630.71
test-add-float0.610.66
test-add-int0.630.67
test-add-nan-fastint0.660.68
test-add-nan0.610.66
test-add-string11.8311.63
test-arith-add2.472.69
test-arith-add-string1.161.17
test-arith-div7.377.36
test-arith-mod6.616.58
test-arith-mul3.343.33
test-arith-sub2.592.69
test-array-append0.430.43
test-array-cons-list0.470.48
test-array-foreach2.122.09
test-array-literal-1002.292.33
test-array-literal-200.540.54
test-array-literal-30.200.21
test-array-pop1.421.47
test-array-push1.721.72
test-array-read1.651.67
test-array-read-lenloop1.701.77
test-array-sort2.993.07
test-array-write1.601.60
test-array-write-length1.421.45
test-assign-add3.703.78
test-assign-addto3.693.78
test-assign-addto-nan1.061.08
test-assign-boolean4.684.70
test-assign-const-int24.695.12
test-assign-const-int2.382.41
test-assign-const3.333.66
test-assign-literal3.623.63
test-assign-proplhs-reg2.502.47
test-assign-proprhs2.662.62
test-assign-reg2.742.73
test-base64-decode1.371.47
test-base64-decode-whitespace1.671.77
test-base64-encode1.621.89
test-bitwise-ops1.591.67
test-break-fast0.890.91
test-break-slow6.476.65
test-buffer-float32array-write2.782.79
test-buffer-nodejs-read2.102.14
test-buffer-nodejs-write2.762.72
test-buffer-object-read2.082.16
test-buffer-object-write2.752.71
test-buffer-plain-read1.761.74
test-buffer-plain-write1.611.65
test-call-apply2.142.18
test-call-basic-15.865.87
test-call-basic-25.885.87
test-call-basic-37.707.74
test-call-basic-415.6516.52
test-call-bound-deep2.432.42
test-call-bound2.312.27
test-call-call1.911.95
test-call-native10.5810.41
test-call-prop3.663.59
test-call-proxy-apply-124.7824.89
test-call-proxy-pass-112.9713.06
test-call-reg2.352.35
test-call-reg-new4.144.11
test-call-tail-1(0.98)0.95
test-call-tail-2(1.13)1.07
test-call-var(5.38)5.16
test-closure-inner-functions1.010.99
test-compile-mandel11.6411.50
test-compile-mandel-nofrac8.778.72
test-compile-short4.374.50
test-compile-string-ascii7.007.12
test-continue-fast1.211.26
test-continue-slow6.826.87
test-empty-loop1.401.49
test-empty-loop-slowpath(0.93)0.89
test-empty-loop-step31.501.58
test-enum-basic2.732.73
test-equals-fastint0.500.51
test-equals-nonfastint0.580.57
test-error-create1.341.34
test-fib-22.882.91
test-fib5.485.34
test-func-bind1.641.65
test-func-tostring3.053.05
test-global-lookup6.186.16
test-hello-world0.000.00
test-hex-decode3.833.83
test-hex-encode2.782.74
test-jc-serialize-indented2.612.60
test-jc-serialize1.811.78
test-json-parse-hex3.203.19
test-json-parse-integer2.522.53
test-json-parse-number4.604.71
test-json-parse-string4.614.64
test-json-serialize-fastpath-loop2.832.82
test-json-serialize-forceslow(7.59)7.32
test-json-serialize-hex1.361.37
test-json-serialize-indented-deep100(1.25)1.16
test-json-serialize-indented-deep252.602.61
test-json-serialize-indented-deep5000.760.78
test-json-serialize-indented4.554.54
test-json-serialize(5.56)5.29
test-json-serialize-jsonrpc-message1.801.86
test-json-serialize-nofrac0.510.50
test-json-serialize-plainbuf2.372.42
test-json-serialize-slowpath-loop2.912.93
test-json-string-bench2.532.50
test-json-string-stringify5.315.36
test-jx-serialize-bufobj-forceslow3.273.30
test-jx-serialize-bufobj1.191.20
test-jx-serialize-indented2.562.59
test-jx-serialize1.741.74
test-mandel-iter10-normal0.030.03
test-mandel-iter10-promise--
test-mandel2.492.70
test-mandel-promise--
test-math-clz321.902.03
test-misc-1dcell3.323.39
test-object-garbage-22.122.19
test-object-garbage(3.10)2.90
test-object-literal-1006.506.79
test-object-literal-201.381.42
test-object-literal-30.300.30
test-prop-read-10242.952.97
test-prop-read-162.962.97
test-prop-read-2562.972.98
test-prop-read-322.992.97
test-prop-read-482.962.97
test-prop-read-4(3.15)3.02
test-prop-read-642.972.98
test-prop-read-82.982.98
test-prop-read-inherited4.314.28
test-prop-read(3.20)3.07
test-prop-write-10242.912.90
test-prop-write-162.932.93
test-prop-write-2562.912.89
test-prop-write-322.912.90
test-prop-write-482.912.89
test-prop-write-42.832.97
test-prop-write-642.912.90
test-prop-write-82.912.89
test-prop-write2.932.98
test-proxy-get1.501.52
test-random1.431.43
test-reflect-ownkeys-sorted0.790.78
test-reflect-ownkeys-unsorted(0.83)0.80
test-regexp-case-insensitive-compile0.640.65
test-regexp-case-insensitive-execute1.421.42
test-regexp-case-sensitive-compile1.191.21
test-regexp-case-sensitive-execute1.041.04
test-regexp-compile1.641.64
test-regexp-execute1.111.12
test-regexp-string-parse5.555.73
test-reg-readwrite-object3.113.09
test-reg-readwrite-plain2.002.01
test-strict-equals-fastint0.510.51
test-strict-equals-nonfastint0.570.57
test-string-array-concat4.544.58
test-string-arridx1.181.19
test-string-charlen-ascii1.081.05
test-string-charlen-nonascii2.602.57
test-string-compare1.831.92
test-string-decodeuri3.543.53
test-string-encodeuri3.593.56
test-string-garbage2.632.75
test-string-intern-grow2(0.54)0.52
test-string-intern-grow5.145.15
test-string-intern-grow-short23.063.06
test-string-intern-grow-short3.113.12
test-string-intern-match0.160.16
test-string-intern-match-short1.231.25
test-string-intern-miss0.270.27
test-string-intern-miss-short1.491.49
test-string-literal-intern(2.72)2.58
test-string-number-list(0.58)0.56
test-string-plain-concat0.410.40
test-string-scan-nonascii3.023.02
test-string-uppercase2.122.15
test-symbol-tostring3.323.99
test-textdecoder-ascii1.862.13
test-textdecoder-nonascii2.632.64
test-textencoder-ascii4.314.23
test-textencoder-nonascii9.7710.45
test-try-catch-nothrow3.153.16
test-try-catch-throw(24.07)22.88
test-try-finally-nothrow3.713.74
test-try-finally-throw(32.48)30.13

Setup

Measurement host:

  • "Intel(R) Core(TM) i7-4600U CPU @ 2.10GHz" laptop

Duktape is compiled with:

  • gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)
  • 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.