Skip to content

Latest commit

 

History

History
317 lines (302 loc) · 29.1 KB

Performance240.md

File metadata and controls

317 lines (302 loc) · 29.1 KB

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.240duk.O2.230
test-add-fastint1.801.78
test-add-float1.781.78
test-add-int1.771.83
test-add-nan-fastint1.801.79
test-add-nan1.781.78
test-add-string25.9325.67
test-arith-add7.187.06
test-arith-add-string2.592.57
test-arith-div10.1610.45
test-arith-mod9.549.49
test-arith-mul7.997.80
test-arith-sub7.067.21
test-array-append1.471.44
test-array-cons-list1.041.03
test-array-foreach(4.00)3.86
test-array-literal-1004.284.22
test-array-literal-201.031.03
test-array-literal-3(0.47)0.45
test-array-pop2.962.97
test-array-push3.223.14
test-array-read4.804.71
test-array-read-lenloop5.525.42
test-array-sort(5.27)4.99
test-array-write4.544.50
test-array-write-length4.324.34
test-assign-add(11.66)11.19
test-assign-addto(11.61)11.22
test-assign-addto-nan2.842.85
test-assign-boolean(10.11)9.75
test-assign-const-int220.3920.93
test-assign-const-int10.2110.69
test-assign-const10.1510.50
test-assign-literal12.1811.87
test-assign-proplhs-reg(6.23)5.95
test-assign-proprhs7.117.00
test-assign-reg10.0210.12
test-base64-decode1.121.13
test-base64-decode-whitespace1.351.37
test-base64-encode1.311.32
test-bitwise-ops5.105.04
test-break-fast3.653.64
test-break-slow15.8015.92
test-buffer-float32array-write9.449.56
test-buffer-nodejs-read6.796.82
test-buffer-nodejs-write8.658.82
test-buffer-object-read6.826.83
test-buffer-object-write8.638.81
test-buffer-plain-read(5.27)4.96
test-buffer-plain-write4.915.01
test-call-apply4.064.07
test-call-basic-110.5210.23
test-call-basic-210.5010.26
test-call-basic-312.5812.74
test-call-basic-427.1328.46
test-call-bound-deep4.334.31
test-call-bound4.204.17
test-call-call3.643.55
test-call-closure-12.942.93
test-call-native(20.84)19.69
test-call-prop7.167.02
test-call-proxy-apply-144.9044.40
test-call-proxy-pass-122.9122.63
test-call-reg4.264.16
test-call-reg-new7.707.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-13.713.72
test-cbor-decode-27.027.07
test-cbor-decode-3(10.10)9.80
test-cbor-decode-fastints1.111.10
test-cbor-decode-largeobj3.313.34
test-cbor-decode-strings1.341.34
test-cbor-encode-19.129.69
test-cbor-encode-213.8114.72
test-cbor-encode-39.8610.57
test-cbor-encode-double0.941.06
test-cbor-encode-float0.951.07
test-cbor-encode-half-float0.991.03
test-cbor-encode-largeobj6.126.62
test-cbor-encode-largestr1.492.19
test-cbor-encode-simple4.124.38
test-closure-inner-functions1.461.76
test-compile-mandel20.6720.80
test-compile-mandel-nofrac14.0014.17
test-compile-short7.097.32
test-compile-string-ascii9.549.59
test-continue-fast5.625.62
test-continue-slow17.8217.90
test-empty-loop6.366.45
test-empty-loop-slowpath2.062.03
test-empty-loop-step36.396.54
test-enum-basic5.115.46
test-equals-fastint(1.53)1.48
test-equals-nonfastint1.551.53
test-error-create2.362.36
test-fib-25.535.50
test-fib9.299.07
test-func-bind2.882.84
test-func-tostring5.645.56
test-global-lookup(12.30)11.91
test-hello-world0.000.00
test-hex-decode2.732.73
test-hex-encode2.222.18
test-jc-serialize-indented5.165.18
test-jc-serialize2.972.95
test-json-parse-hex2.582.58
test-json-parse-integer4.244.32
test-json-parse-number8.668.49
test-json-parse-string3.003.00
test-json-serialize-fastpath-loop5.395.34
test-json-serialize-forceslow10.6910.78
test-json-serialize-hex1.091.10
test-json-serialize-indented-deep1002.001.95
test-json-serialize-indented-deep255.035.09
test-json-serialize-indented-deep5001.261.24
test-json-serialize-indented9.289.31
test-json-serialize-jsonrpc-message1.381.38
test-json-serialize-largeobj5.275.14
test-json-serialize-nofrac0.890.88
test-json-serialize-plainbuf4.674.58
test-json-serialize-simple6.806.72
test-json-serialize-slowpath-loop5.265.31
test-json-string-bench4.804.71
test-json-string-stringify4.204.23
test-jx-serialize-bufobj-forceslow5.525.51
test-jx-serialize-bufobj1.641.65
test-jx-serialize-indented5.135.16
test-jx-serialize2.952.96
test-mandel-iter10-normal0.080.09
test-mandel-iter10-promise--
test-mandel8.718.76
test-mandel-promise--
test-math-clz324.083.97
test-misc-1dcell7.917.69
test-object-garbage-23.703.76
test-object-garbage7.387.40
test-object-literal-10010.6910.84
test-object-literal-202.362.39
test-object-literal-30.570.58
test-prop-read-10247.857.71
test-prop-read-167.847.70
test-prop-read-2567.857.70
test-prop-read-327.827.70
test-prop-read-487.847.69
test-prop-read-47.887.72
test-prop-read-647.827.69
test-prop-read-87.827.70
test-prop-read-inherited9.859.78
test-prop-read7.927.75
test-prop-write-10246.936.84
test-prop-write-166.936.82
test-prop-write-2566.956.82
test-prop-write-326.936.82
test-prop-write-486.946.83
test-prop-write-47.016.85
test-prop-write-646.926.81
test-prop-write-86.936.80
test-prop-write7.026.88
test-proxy-get2.862.80
test-random(2.78)2.62
test-reflect-ownkeys-sorted1.321.30
test-reflect-ownkeys-unsorted1.361.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-execute2.002.02
test-regexp-compile2.842.82
test-regexp-execute2.342.35
test-regexp-string-parse13.5213.59
test-reg-readwrite-object7.768.04
test-reg-readwrite-plain7.737.55
test-strict-equals-fastint(1.61)1.55
test-strict-equals-nonfastint1.611.60
test-string-array-concat14.0613.90
test-string-arridx2.672.64
test-string-charlen-ascii1.791.82
test-string-charlen-nonascii2.662.64
test-string-compare5.817.10
test-string-decodeuri9.048.83
test-string-encodeuri8.618.65
test-string-garbage5.965.91
test-string-intern-grow20.890.90
test-string-intern-grow7.527.50
test-string-intern-grow-short25.425.40
test-string-intern-grow-short5.535.54
test-string-intern-match0.260.26
test-string-intern-match-short2.102.11
test-string-intern-miss(0.53)0.51
test-string-intern-miss-short2.592.58
test-string-literal-intern4.964.85
test-string-number-list0.850.83
test-string-plain-concat0.900.91
test-string-scan-nonascii(4.64)4.20
test-string-uppercase4.394.35
test-symbol-tostring6.085.99
test-textdecoder-ascii(4.18)3.98
test-textdecoder-nonascii2.852.77
test-textencoder-ascii13.2413.30
test-textencoder-nonascii20.3620.42
test-try-catch-nothrow7.837.91
test-try-catch-throw43.6043.26
test-try-finally-nothrow9.769.76
test-try-finally-throw57.7557.40

Setup

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.