Skip to content

Latest commit

 

History

History
175 lines (164 loc) · 22.8 KB

Performance200.md

File metadata and controls

175 lines (164 loc) · 22.8 KB

Duktape 2.0.0 performance measurement

Performance summary

duk-perf.O2.200duk.O2.200duk.O2.150mujsjerryluapythonperlruby
test-add-fastint.js0.550.650.884.042.55n/an/an/an/a
test-add-float.js0.560.710.854.043.87n/an/an/an/a
test-add-nan-fastint.js0.630.770.994.043.14n/an/an/an/a
test-add-nan.js0.550.640.824.033.86n/an/an/an/a
test-arith-add.js2.242.583.3015.9315.35n/an/an/an/a
test-arith-div.js6.957.288.2311.1719.73n/an/an/an/a
test-arith-mod.js6.326.667.8413.4023.35n/an/an/an/a
test-arith-mul.js3.353.664.3710.9815.89n/an/an/an/a
test-arith-sub.js2.332.743.5611.0915.83n/an/an/an/a
test-array-append.js0.530.530.7243.56n/an/an/an/an/a
test-array-cons-list.js0.810.922.338.182.10n/an/an/an/a
test-array-foreach.js2.522.702.732.821.53n/an/an/an/a
test-array-literal.js1.491.581.8054.910.84n/an/an/an/a
test-array-pop.js2.132.217.3546.676.711.100.88n/an/a
test-array-push.js2.402.544.937.853.630.990.52n/an/a
test-array-read-lenloop.js1.751.882.68113.663.94n/an/an/an/a
test-array-read.js1.661.732.10216.374.980.941.733.231.44
test-array-sort.js3.573.493.46n/a3.73n/an/an/an/a
test-array-write-length.js1.491.702.833.372.52n/an/an/an/a
test-array-write.js1.661.782.64233.385.711.132.483.224.02
test-assign-add.js3.323.745.2134.1322.743.1913.8424.9810.17
test-assign-addto-nan.js1.011.251.597.385.56n/an/an/an/a
test-assign-addto.js3.343.675.2934.4327.363.2516.2024.0710.21
test-assign-boolean.js4.694.684.849.4419.35n/an/an/an/a
test-assign-const-int.js1.932.532.579.6511.072.105.5322.374.02
test-assign-const-int2.js3.925.779.009.6111.08n/an/an/an/a
test-assign-const.js3.294.284.289.8615.582.145.4622.734.06
test-assign-literal.js3.333.754.219.9721.682.6012.04n/a4.46
test-assign-proplhs-reg.js2.472.673.742.414.91n/an/an/an/a
test-assign-proprhs.js2.632.924.252.513.54n/an/an/an/a
test-assign-reg.js2.462.842.798.9014.842.265.7523.324.08
test-base64-decode-whitespace.js1.891.88n/an/an/an/a8.73n/an/a
test-base64-decode.js1.531.53n/an/an/an/a8.69n/an/a
test-base64-encode.js1.681.68n/an/an/an/a17.08n/an/a
test-bitwise-ops.js1.531.892.6114.4021.07n/an/an/an/a
test-break-fast.js1.301.521.611.221.14n/an/an/an/a
test-break-slow.js6.767.438.002.554.15n/an/an/an/a
test-buffer-nodejs-read.js2.102.312.64n/an/an/an/an/an/a
test-buffer-nodejs-write.js2.793.033.14n/an/an/an/an/an/a
test-buffer-object-read.js2.092.302.60n/an/an/an/an/an/a
test-buffer-object-write.js2.793.053.15n/an/an/an/an/an/a
test-buffer-plain-read.js1.731.892.25n/an/an/an/an/an/a
test-buffer-plain-write.js1.721.791.82n/an/an/an/an/an/a
test-call-basic-1.js7.297.729.256.539.092.235.297.873.40
test-call-basic-2.js7.417.739.214.908.18n/an/an/an/a
test-call-basic-3.js9.099.7715.0012.4314.31n/an/an/an/a
test-call-basic-4.js16.0217.8937.3134.4835.17n/an/an/an/a
test-call-native.js12.4413.3913.9217.197.69n/an/an/an/a
test-call-prop.js3.994.225.782.874.13n/an/an/an/a
test-call-reg-new.js6.286.406.702.733.22n/an/an/an/a
test-call-reg.js2.833.003.602.283.36n/an/an/an/a
test-call-var.js7.778.268.054.363.79n/an/an/an/a
test-compile-mandel-nofrac.js10.9010.6913.295.902.22n/an/an/an/a
test-compile-mandel.js13.9613.7216.505.842.24n/an/an/an/a
test-compile-short.js6.386.809.882.110.86n/an/an/an/a
test-compile-string-ascii.js6.666.709.176.32n/an/an/an/an/a
test-continue-fast.js1.681.842.231.962.20n/an/an/an/a
test-continue-slow.js7.497.888.353.325.91n/an/an/an/a
test-empty-loop-slowpath.js1.491.682.010.990.68n/an/an/an/a
test-empty-loop.js1.621.652.275.873.161.004.543.443.34
test-enum-basic.js3.983.994.530.681.06n/an/an/an/a
test-equals-fastint.js0.510.611.172.372.87n/an/an/an/a
test-equals-nonfastint.js0.510.621.232.353.93n/an/an/an/a
test-error-create.js2.132.123.314.760.80n/an/an/an/a
test-fib.js6.326.967.783.304.981.402.456.451.54
test-global-lookup.js7.807.8710.264.152.20n/an/an/an/a
test-hello-world.js0.000.000.000.000.000.000.000.000.00
test-hex-decode.js3.593.653.68n/an/an/a12.71n/an/a
test-hex-encode.js2.812.82n/an/an/an/a1.42n/an/a
test-jc-serialize-indented.js3.333.403.56n/an/an/an/an/an/a
test-jc-serialize.js2.092.222.46n/an/an/an/an/an/a
test-json-parse-hex.js3.163.23n/an/an/an/an/an/an/a
test-json-parse-integer.js3.933.824.0821.09n/an/a0.07n/an/a
test-json-parse-number.js5.235.155.232.41n/an/a0.29n/an/a
test-json-parse-string.js5.575.825.8045.21n/an/an/an/an/a
test-json-serialize-fastpath-loop.js3.663.613.6112.61532.24n/an/an/an/a
test-json-serialize-forceslow.js9.709.0811.192.198.86n/an/an/an/a
test-json-serialize-hex.js1.441.49n/an/an/an/an/an/an/a
test-json-serialize-indented-deep100.js1.771.772.451.52135.92n/an/an/an/a
test-json-serialize-indented-deep25.js3.113.253.3110.34240.02n/an/an/an/a
test-json-serialize-indented-deep500.js1.241.171.57n/an/an/an/an/an/a
test-json-serialize-indented.js5.805.916.3414.83106.53n/an/an/an/a
test-json-serialize-jsonrpc-message.js1.981.971.99n/an/an/an/an/an/a
test-json-serialize-nofrac.js0.590.610.671.567.26n/an/an/an/a
test-json-serialize-slowpath-loop.js4.274.286.04n/a6.08n/an/an/an/a
test-json-serialize.js6.255.876.182.208.78n/a0.51n/an/a
test-json-string-bench.js3.413.495.2949.96n/an/an/an/an/a
test-json-string-stringify.js5.125.175.1910.73n/an/a0.48n/an/a
test-jx-serialize-bufobj-forceslow.js4.664.835.61n/an/an/an/an/an/a
test-jx-serialize-bufobj.js1.501.571.65n/an/an/an/an/an/a
test-jx-serialize-indented.js3.203.403.50n/an/an/an/an/an/a
test-jx-serialize.js2.152.232.44n/an/an/an/an/an/a
test-mandel.js2.482.984.3613.9413.151.60n/an/an/a
test-object-garbage-2.js4.714.914.8749.952.59n/an/an/an/a
test-object-garbage.js4.474.514.372.372.763.440.66n/an/a
test-object-literal.js2.802.882.543.892.28n/an/an/an/a
test-prop-read-4.js3.143.524.753.653.95n/an/an/an/a
test-prop-read-8.js3.273.834.964.523.93n/an/an/an/a
test-prop-read.js3.153.644.803.813.941.082.374.8911.20
test-prop-write-1024.js3.733.335.129.934.48n/an/an/an/a
test-prop-write-16.js3.183.784.584.484.49n/an/an/an/a
test-prop-write-256.js3.353.924.968.364.68n/an/an/an/a
test-prop-write-32.js3.823.446.825.554.66n/an/an/an/a
test-prop-write-4.js2.873.134.373.754.68n/an/an/an/a
test-prop-write-48.js5.564.625.406.624.61n/an/an/an/a
test-prop-write-64.js4.414.154.976.754.75n/an/an/an/a
test-prop-write-8.js3.093.534.504.664.65n/an/an/an/a
test-prop-write.js2.923.234.393.894.651.222.565.1215.57
test-random.js2.202.306.491.061.93n/an/an/an/a
test-reg-readwrite-object.js3.003.093.217.8013.441.77n/a29.133.97
test-reg-readwrite-plain.js1.782.032.057.7310.821.734.8330.804.00
test-regexp-case-insensitive.js0.0024.8224.510.000.00n/an/an/an/a
test-regexp-compile.js2.142.172.691.500.43n/an/an/an/a
test-regexp-execute.js1.541.491.891.571.08n/an/an/an/a
test-regexp-string-parse.js5.945.999.70n/an/an/a0.51n/an/a
test-strict-equals-fastint.js0.490.581.172.453.04n/an/an/an/a
test-strict-equals-nonfastint.js0.570.631.242.433.84n/an/an/an/a
test-string-array-concat.js5.435.526.67256.24n/a2.112.847.567.90
test-string-charlen-ascii.js1.121.071.344.720.75n/an/an/an/a
test-string-charlen-nonascii.js2.652.672.827.110.50n/an/an/an/a
test-string-compare.js1.852.133.84769.37n/a2.824.9316.595.43
test-string-decodeuri.js3.613.603.722.13n/an/an/an/an/a
test-string-encodeuri.js4.064.054.043.61n/an/an/an/an/a
test-string-garbage.js5.154.945.381.721.811.541.49n/an/a
test-string-intern-grow-short.js11.7411.5711.91n/an/an/an/an/an/a
test-string-intern-grow-short2.js4.614.595.00n/an/an/an/an/an/a
test-string-intern-grow.js20.5320.2619.92n/an/an/an/an/an/a
test-string-intern-grow2.js1.791.791.79n/an/an/an/an/an/a
test-string-intern-match-short.js2.592.642.50n/an/an/an/an/an/a
test-string-intern-match.js0.220.230.26n/an/an/an/an/an/a
test-string-intern-miss-short.js2.973.093.28n/an/an/an/an/an/a
test-string-intern-miss.js1.141.201.19n/an/an/an/an/an/a
test-string-plain-concat.js0.890.861.091.030.520.630.000.400.77
test-string-uppercase.js2.322.212.234.48n/an/a1.27n/an/a
test-textdecoder-ascii.js2.842.79n/an/an/an/an/an/an/a
test-textdecoder-nonascii.js2.792.77n/an/an/an/an/an/an/a
test-textencoder-ascii.js3.984.19n/an/an/an/an/an/an/a
test-textencoder-nonascii.js11.2711.21n/an/an/an/an/an/an/a
test-try-catch-nothrow.js2.652.592.932.213.18n/an/an/an/a
test-try-catch-throw.js37.5738.3238.8320.5914.89n/an/an/an/a
test-try-finally-nothrow.js2.973.393.712.063.63n/an/an/an/a
test-try-finally-throw.js47.1648.8848.6622.9317.85n/an/an/an/a

Setup

Measurement host:

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

Duktape is compiled with:

  • gcc-4.8.4 (Ubuntu 14.04.3) on x64
  • gcc -O2
  • duk.O2: defaults + debugger and executor interrupt enabled, fastints enabled
  • duk-perf.O2: performance-sensitive.yaml as baseline, no debugger or executor interrupt support, 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.