From 5c6654b084bb3155b77d655ac3ae1a079216407f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Thu, 23 Mar 2017 17:30:56 -0400 Subject: [PATCH 1/5] first cut bench/ - use karma-benchmark framework which uses benchmark.js under the hood to run the benchmarks - use karma-benchmark-json-reporter to output benchmark result to JSON file checked in to dist/ (good idea?) - use karma-benchmarkjs-reporter to output log to stdout during runs - add a few suites (more to come) --- bench/.eslintrc | 11 ++ bench/karma.conf.js | 82 +++++++++++++ bench/suites/lib_bench.js | 16 +++ bench/suites/plot_big_data_bench.js | 36 ++++++ bench/suites/plot_mock_bench.js | 35 ++++++ dist/benchmarks.json | 172 ++++++++++++++++++++++++++++ package.json | 4 + 7 files changed, 356 insertions(+) create mode 100644 bench/.eslintrc create mode 100644 bench/karma.conf.js create mode 100644 bench/suites/lib_bench.js create mode 100644 bench/suites/plot_big_data_bench.js create mode 100644 bench/suites/plot_mock_bench.js create mode 100644 dist/benchmarks.json diff --git a/bench/.eslintrc b/bench/.eslintrc new file mode 100644 index 00000000000..109398c8edd --- /dev/null +++ b/bench/.eslintrc @@ -0,0 +1,11 @@ +{ + "extends": "../.eslintrc", + "env": { + "browser": true + }, + "globals": { + "suite": true, + "benchmark": true, + "Plotly": true + } +} diff --git a/bench/karma.conf.js b/bench/karma.conf.js new file mode 100644 index 00000000000..53222263580 --- /dev/null +++ b/bench/karma.conf.js @@ -0,0 +1,82 @@ +/* eslint-env node*/ + +var pkg = require('../package.json'); +var execSync = require('child_process').execSync; + +func.defaultConfig = { + + // base path that will be used to resolve all patterns (eg. files, exclude) + basePath: '.', + + // frameworks to use + // available frameworks: https://npmjs.org/browse/keyword/karma-adapter + frameworks: ['browserify', 'benchmark'], + reporters: ['benchmark', 'benchmark-json'], + + // list of files / patterns to load in the browser + files: [ + '../build/plotly.js', + './suites/*_bench.js' + ], + + preprocessors: { + './suites/*_bench.js': ['browserify'] + }, + + browserify: { + transform: ['../tasks/util/shortcut_paths.js'], + extensions: ['.js'], + debug: true + }, + + benchmarkJsonReporter: { + pathToJson: '../dist/benchmarks.json', + formatOutput: function(results) { + return { + meta: { + version: pkg.version, + commit: execSync('git rev-parse HEAD').toString().replace('\n', ''), + date: (new Date()).toTimeString() + }, + results: results + }; + } + }, + + // web server port + port: 9876, + + // enable / disable colors in the output (reporters and logs) + colors: true, + + // enable / disable watching file and executing tests whenever any file changes + autoWatch: false, + + // if true, Karma captures browsers, runs the tests and exits + singleRun: true, + + // how long will Karma wait for a message from a browser before disconnecting (30 ms) + browserNoActivityTimeout: 30000, + + // start these browsers + // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher + browsers: ['Chrome_WindowSized'], + + // custom browser options + // + // window-size values came from observing default size + // + // '--ignore-gpu-blacklist' allow to test WebGL on CI (!!!) + customLaunchers: { + Chrome_WindowSized: { + base: 'Chrome', + flags: ['--window-size=1035,617', '--ignore-gpu-blacklist'] + }, + Firefox_WindowSized: { + base: 'Firefox', + flags: ['--width=1035', '--height=617'] + } + } +}; + +module.exports = func; diff --git a/bench/suites/lib_bench.js b/bench/suites/lib_bench.js new file mode 100644 index 00000000000..8978f9ab08a --- /dev/null +++ b/bench/suites/lib_bench.js @@ -0,0 +1,16 @@ +var Lib = require('@src/lib'); + +suite('Benchmark: lib functions', function() { + + benchmark('Lib.cleanNumber', function() { + [ + 0, 1, 2, 1234.567, + -1, -100, -999.999, + Number.MAX_VALUE, Number.MIN_VALUE, Number.EPSILON, + -Number.MAX_VALUE, -Number.MIN_VALUE, -Number.EPSILON, + NaN, Infinity, -Infinity, null, undefined, new Date(), '', + ' ', '\t', '2\t2', '2%2', '2$2', {1: 2}, [1], ['1'], {}, [] + ] + .forEach(Lib.cleanNumber); + }); +}); diff --git a/bench/suites/plot_big_data_bench.js b/bench/suites/plot_big_data_bench.js new file mode 100644 index 00000000000..02131bbfd7a --- /dev/null +++ b/bench/suites/plot_big_data_bench.js @@ -0,0 +1,36 @@ +var suiteOpts = { + defer: true +}; + +var benchmarkOpts = { + setup: function() { + this.gd = document.createElement('div'); + document.body.appendChild(this.gd); + }, + teardown: function() { + Plotly.purge(this.gd); + document.body.removeChild(this.gd); + } +}; + +suite('Benchmark: plotting large data', function() { + var N = 1e5; + + var trace = { + type: 'scattergl', + x: new Array(N), + y: new Array(N) + }; + + for(var i = 0; i < N; i++) { + trace.x[i] = Math.random(); + trace.y[i] = Math.random(); + } + + benchmark('scattergl 1e5 pts', function(deferred) { + Plotly.plot(this.gd, [trace]).then(function() { + deferred.resolve(); + }); + }, benchmarkOpts); + +}, suiteOpts); diff --git a/bench/suites/plot_mock_bench.js b/bench/suites/plot_mock_bench.js new file mode 100644 index 00000000000..c6e06848ea1 --- /dev/null +++ b/bench/suites/plot_mock_bench.js @@ -0,0 +1,35 @@ +var suiteOpts = { + defer: true +}; + +var benchmarkOpts = { + setup: function() { + this.gd = document.createElement('div'); + document.body.appendChild(this.gd); + }, + + teardown: function() { + Plotly.purge(this.gd); + document.body.removeChild(this.gd); + } +}; + +suite('Benchmark: plotting image mocks', function() { + + benchmark('17.json', function(deferred) { + var mock = require('@mocks/17.json'); + + Plotly.plot(this.gd, mock).then(function() { + deferred.resolve(); + }); + }, benchmarkOpts); + + benchmark('contour_match_edges', function(deferred) { + var mock = require('@mocks/contour_match_edges.json'); + + Plotly.plot(this.gd, mock).then(function() { + deferred.resolve(); + }); + }, benchmarkOpts); + +}, suiteOpts); diff --git a/dist/benchmarks.json b/dist/benchmarks.json new file mode 100644 index 00000000000..a4a7d0ddead --- /dev/null +++ b/dist/benchmarks.json @@ -0,0 +1,172 @@ +{ + "meta": { + "version": "1.24.2", + "commit": "87fda71a4e16f544dca19ae63c53aef3f87e7c3f\n", + "date": "17:24:16 GMT-0400 (EDT)" + }, + "results": [ + { + "fullName": "Benchmark: lib function--Lib.cleanNumber-Chrome 57.0.2987 (Linux 0.0.0)", + "browser": "Chrome 57.0.2987 (Linux 0.0.0)", + "suite": "Benchmark: lib functions", + "name": "Lib.cleanNumber", + "count": 29676, + "cycles": 4, + "hz": 384570.19438444916, + "hzDeviation": 17008.634032458256, + "mean": 0.0000026003055218582925, + "deviation": 1.364101677043473e-7, + "variance": 1.8607733853128157e-14, + "moe": 3.29102246178391e-8, + "rme": 1.2656291478518267, + "sem": 1.679093092746893e-8, + "sample": [ + 0.00000266208383879229, + 0.0000027968728939210137, + 0.000002763175630138833, + 0.0000025609920474457475, + 0.0000025609920474457475, + 0.0000025609920474457475, + 0.0000025272947836635666, + 0.0000025272947836635666, + 0.000002628386575010109, + 0.0000025272947836635666, + 0.0000025946893112279283, + 0.0000025609920474457475, + 0.0000025609920474457475, + 0.000002628386575010109, + 0.00000266208383879229, + 0.0000025609920474457475, + 0.0000025272947836635666, + 0.0000025272947836635666, + 0.0000025272947836635666, + 0.000002628386575010109, + 0.0000025609920474457475, + 0.0000025946893112279283, + 0.0000025609920474457475, + 0.0000025609920474457475, + 0.0000025609920474457475, + 0.0000025609920474457475, + 0.0000025946893112279283, + 0.0000025272947836635666, + 0.0000025609920474457475, + 0.0000025609920474457475, + 0.0000025609920474457475, + 0.000003571909960911174, + 0.0000025272947836635666, + 0.000002763175630138833, + 0.0000025609920474457475, + 0.00000266208383879229, + 0.0000025946893112279283, + 0.0000025609920474457475, + 0.0000025609920474457475, + 0.0000025609920474457475, + 0.0000025272947836635666, + 0.0000025609920474457475, + 0.000002729478366356652, + 0.0000025946893112279283, + 0.000002628386575010109, + 0.0000025609920474457475, + 0.0000025272947836635666, + 0.0000025609920474457475, + 0.0000025272947836635666, + 0.000002628386575010109, + 0.0000025272947836635666, + 0.0000025609920474457475, + 0.0000025946893112279283, + 0.000002695781102574471, + 0.0000025946893112279283, + 0.0000025609920474457475, + 0.0000025609920474457475, + 0.0000025609920474457475, + 0.0000025609920474457475, + 0.0000025272947836635666, + 0.0000025609920474457475, + 0.0000025609920474457475, + 0.0000025609920474457475, + 0.0000025609920474457475, + 0.0000025946893112279283, + 0.000002729478366356652 + ] + }, + { + "fullName": "Benchmark: plotting image mock--17.j-on-Chrome 57.0.2987 (Linux 0.0.0)", + "browser": "Chrome 57.0.2987 (Linux 0.0.0)", + "suite": "Benchmark: plotting image mocks", + "name": "17.json", + "count": 2, + "cycles": 2, + "hz": 3.2833983172583627, + "hzDeviation": 6.586365198789878, + "mean": 0.30456249999999996, + "deviation": 0.3768417096171055, + "variance": 0.14200967410714288, + "moe": 0.31509761571970124, + "rme": 103.45909812261893, + "sem": 0.13323366415209353, + "sample": [ + 0.056, + 0.0605, + 0.0915, + 0.1035, + 0.1735, + 0.278, + 0.5185, + 1.155 + ] + }, + { + "fullName": "Benchmark: plotting image mock--contour_match_edge--Chrome 57.0.2987 (Linux 0.0.0)", + "browser": "Chrome 57.0.2987 (Linux 0.0.0)", + "suite": "Benchmark: plotting image mocks", + "name": "contour_match_edges", + "count": 2, + "cycles": 2, + "hz": 2.202989771833202, + "hzDeviation": 5.00452373940872, + "mean": 0.45392857142857146, + "deviation": 0.519817229784616, + "variance": 0.2702099523809523, + "moe": 0.48076807368986396, + "rme": 105.91271489627215, + "sem": 0.19647244531665875, + "sample": [ + 0.083, + 0.0825, + 0.1245, + 0.206, + 0.445, + 0.7355, + 1.501 + ] + }, + { + "fullName": "Benchmark: plotting large data--cattergl 1e5 pt--Chrome 57.0.2987 (Linux 0.0.0)", + "browser": "Chrome 57.0.2987 (Linux 0.0.0)", + "suite": "Benchmark: plotting large data", + "name": "scattergl 1e5 pts", + "count": 1, + "cycles": 1, + "hz": 1.4579384749963553, + "hzDeviation": 0.8757783387450939, + "mean": 0.6859, + "deviation": 0.24255604163436814, + "variance": 0.05883343333333334, + "moe": 0.17350208461698663, + "rme": 25.29553646551781, + "sem": 0.07670295517992336, + "sample": [ + 0.809, + 0.796, + 0.814, + 0.329, + 0.813, + 0.85, + 0.339, + 0.346, + 0.92, + 0.843 + ] + } + ] +} \ No newline at end of file diff --git a/package.json b/package.json index 20f2a9f7c4c..86cc3fb8bc6 100644 --- a/package.json +++ b/package.json @@ -44,6 +44,7 @@ "start-image_viewer": "node devtools/image_viewer/server.js", "start": "npm run start-test_dashboard", "baseline": "node tasks/baseline.js", + "bench": "karma start bench/karma.conf.js", "preversion": "npm-link-check && npm dedupe && npm ls", "version": "npm run build && git add -A dist src build", "postversion": "node -e \"console.log('Version bumped and committed. If ok, run: git push && git push --tags')\"" @@ -115,6 +116,9 @@ "image-size": "^0.5.1", "jasmine-core": "^2.4.1", "karma": "^1.5.0", + "karma-benchmark": "^0.7.1", + "karma-benchmark-json-reporter": "^0.1.0", + "karma-benchmarkjs-reporter": "^1.0.0", "karma-browserify": "^5.1.1", "karma-chrome-launcher": "^2.0.0", "karma-coverage": "^1.0.0", From aea940b6967ffd3f10b4e4d19d79ebeb168c8881 Mon Sep 17 00:00:00 2001 From: etienne Date: Thu, 22 Feb 2018 15:13:22 -0500 Subject: [PATCH 2/5] bump karma-benchmark-json-reporter dev-dep --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 40ad6c3d517..c790854628a 100644 --- a/package.json +++ b/package.json @@ -133,7 +133,7 @@ "karma": "^2.0.0", "karma-browserify": "^5.2.0", "karma-benchmark": "^0.7.1", - "karma-benchmark-json-reporter": "^0.1.0", + "karma-benchmark-json-reporter": "^1.0.1", "karma-benchmarkjs-reporter": "^1.0.0", "karma-chrome-launcher": "^2.0.0", "karma-coverage": "^1.0.0", From d127da5a61d64f7655fa6469937316d20f2ccc86 Mon Sep 17 00:00:00 2001 From: etienne Date: Thu, 22 Feb 2018 15:13:38 -0500 Subject: [PATCH 3/5] add benchmark dev-deps to package-lock --- package-lock.json | 470 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 470 insertions(+) diff --git a/package-lock.json b/package-lock.json index a984a484240..1770bb777c1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -787,6 +787,16 @@ "tweetnacl": "0.14.5" } }, + "benchmark": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.3.tgz", + "integrity": "sha1-4Q5A5NU9Dhydd6g0/eWTmU3Kfww=", + "dev": true, + "requires": { + "lodash": "4.17.5", + "platform": "1.3.3" + } + }, "better-assert": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", @@ -5375,6 +5385,15 @@ "ansi-regex": "2.1.1" } }, + "has-binary": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", + "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=", + "dev": true, + "requires": { + "isarray": "0.0.1" + } + }, "has-binary2": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.2.tgz", @@ -6393,6 +6412,12 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, + "json3": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.2.6.tgz", + "integrity": "sha1-9u/JPAagTemuxTBT3yVZuxniA4s=", + "dev": true + }, "jsonfile": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", @@ -6665,6 +6690,424 @@ } } }, + "karma-benchmark": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/karma-benchmark/-/karma-benchmark-0.7.1.tgz", + "integrity": "sha1-IeIAcbczSFMgj3xZTxwf/ibozlo=", + "dev": true, + "requires": { + "benchmark": "2.1.3", + "karma": "1.3.0", + "lodash": "4.17.4", + "platform": "1.3.3" + }, + "dependencies": { + "accepts": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.1.4.tgz", + "integrity": "sha1-1xyW99QdD+2iw4zRToonwEFY30o=", + "dev": true, + "requires": { + "mime-types": "2.0.14", + "negotiator": "0.4.9" + } + }, + "after": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.1.tgz", + "integrity": "sha1-q11PuIP1loFtNRX495HAr0ht1ic=", + "dev": true + }, + "arraybuffer.slice": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", + "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=", + "dev": true + }, + "base64-arraybuffer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.2.tgz", + "integrity": "sha1-R030qfLaJOBd8xWMOx2zw81GoVQ=", + "dev": true + }, + "base64id": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-0.1.0.tgz", + "integrity": "sha1-As4P3u4M709ACA4ec+g08LG/zj8=", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "component-emitter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", + "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=", + "dev": true + }, + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "engine.io": { + "version": "1.6.10", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.6.10.tgz", + "integrity": "sha1-+H2E4b0h0aLsf43u8MYgVKzfsno=", + "dev": true, + "requires": { + "accepts": "1.1.4", + "base64id": "0.1.0", + "debug": "2.2.0", + "engine.io-parser": "1.2.4", + "ws": "1.0.1" + } + }, + "engine.io-client": { + "version": "1.6.9", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.6.9.tgz", + "integrity": "sha1-HWrUgEilCDyVCWlDsp0279shJAE=", + "dev": true, + "requires": { + "component-emitter": "1.1.2", + "component-inherit": "0.0.3", + "debug": "2.2.0", + "engine.io-parser": "1.2.4", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parsejson": "0.0.1", + "parseqs": "0.0.2", + "parseuri": "0.0.4", + "ws": "1.0.1", + "xmlhttprequest-ssl": "1.5.1", + "yeast": "0.1.2" + } + }, + "engine.io-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.2.4.tgz", + "integrity": "sha1-4Il7C/FOeS1M0qWVBVORnFaUjEI=", + "dev": true, + "requires": { + "after": "0.8.1", + "arraybuffer.slice": "0.0.6", + "base64-arraybuffer": "0.1.2", + "blob": "0.0.4", + "has-binary": "0.1.6", + "utf8": "2.1.0" + }, + "dependencies": { + "has-binary": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.6.tgz", + "integrity": "sha1-JTJvOc+k9hath4eJTjryz7x7bhA=", + "dev": true, + "requires": { + "isarray": "0.0.1" + } + } + } + }, + "karma": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/karma/-/karma-1.3.0.tgz", + "integrity": "sha1-srlOj0mfrdAGnVT5rvSk1I7FzB8=", + "dev": true, + "requires": { + "bluebird": "3.5.1", + "body-parser": "1.18.2", + "chokidar": "1.7.0", + "colors": "1.1.2", + "combine-lists": "1.0.1", + "connect": "3.6.6", + "core-js": "2.5.3", + "di": "0.0.1", + "dom-serialize": "2.2.1", + "expand-braces": "0.1.2", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "http-proxy": "1.16.2", + "isbinaryfile": "3.0.2", + "lodash": "3.10.1", + "log4js": "0.6.38", + "mime": "1.6.0", + "minimatch": "3.0.4", + "optimist": "0.6.1", + "qjobs": "1.2.0", + "range-parser": "1.2.0", + "rimraf": "2.6.2", + "socket.io": "1.4.7", + "source-map": "0.5.7", + "tmp": "0.0.28", + "useragent": "2.3.0" + }, + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + } + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "log4js": { + "version": "0.6.38", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz", + "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=", + "dev": true, + "requires": { + "readable-stream": "1.0.34", + "semver": "4.3.6" + } + }, + "mime-db": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz", + "integrity": "sha1-PQxjGA9FjrENMlqqN9fFiuMS6dc=", + "dev": true + }, + "mime-types": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", + "integrity": "sha1-MQ4VnbI+B3+Lsit0jav6SVcUCqY=", + "dev": true, + "requires": { + "mime-db": "1.12.0" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + }, + "negotiator": { + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.4.9.tgz", + "integrity": "sha1-kuRrbbU8fkIe1koryU8IvnYw3z8=", + "dev": true + }, + "parseqs": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.2.tgz", + "integrity": "sha1-nf5wss3aw4i95PNbHyQPpYrb5sc=", + "dev": true, + "requires": { + "better-assert": "1.0.2" + } + }, + "parseuri": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.4.tgz", + "integrity": "sha1-gGWCo5iH4eoY3V4v4OAZAiaOk1A=", + "dev": true, + "requires": { + "better-assert": "1.0.2" + } + }, + "semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", + "dev": true + }, + "socket.io": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.4.7.tgz", + "integrity": "sha1-krf3y4jFeX1NruJ5/oB12+bT+hw=", + "dev": true, + "requires": { + "debug": "2.2.0", + "engine.io": "1.6.10", + "has-binary": "0.1.7", + "socket.io-adapter": "0.4.0", + "socket.io-client": "1.4.6", + "socket.io-parser": "2.2.6" + } + }, + "socket.io-adapter": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.4.0.tgz", + "integrity": "sha1-+5+CqxqmUpC/csNleVW5MKmRok8=", + "dev": true, + "requires": { + "debug": "2.2.0", + "socket.io-parser": "2.2.2" + }, + "dependencies": { + "benchmark": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-1.0.0.tgz", + "integrity": "sha1-Lx4vpMNZ8REiqhgwgiGOlX45DHM=", + "dev": true + }, + "socket.io-parser": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.2.2.tgz", + "integrity": "sha1-PXr2tkSX6Va32f53X5mXFgJ/lBc=", + "dev": true, + "requires": { + "benchmark": "1.0.0", + "component-emitter": "1.1.2", + "debug": "0.7.4", + "isarray": "0.0.1", + "json3": "3.2.6" + }, + "dependencies": { + "debug": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", + "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=", + "dev": true + } + } + } + } + }, + "socket.io-client": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.4.6.tgz", + "integrity": "sha1-SbC6U379FbgpfIQBbmQuHHx1LD0=", + "dev": true, + "requires": { + "backo2": "1.0.2", + "component-bind": "1.0.0", + "component-emitter": "1.2.0", + "debug": "2.2.0", + "engine.io-client": "1.6.9", + "has-binary": "0.1.7", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseuri": "0.0.4", + "socket.io-parser": "2.2.6", + "to-array": "0.1.4" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.0.tgz", + "integrity": "sha1-zNETqGOI0GSC0D3j/H35hSa6jv4=", + "dev": true + } + } + }, + "socket.io-parser": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.2.6.tgz", + "integrity": "sha1-ON/WHfUNz4qx2eIJEyK/kCuii5k=", + "dev": true, + "requires": { + "benchmark": "1.0.0", + "component-emitter": "1.1.2", + "debug": "2.2.0", + "isarray": "0.0.1", + "json3": "3.3.2" + }, + "dependencies": { + "benchmark": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-1.0.0.tgz", + "integrity": "sha1-Lx4vpMNZ8REiqhgwgiGOlX45DHM=", + "dev": true + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + } + } + }, + "tmp": { + "version": "0.0.28", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.28.tgz", + "integrity": "sha1-Fyc1t/YU6nrzlmT6hM8N5OUV0SA=", + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } + }, + "ultron": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", + "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=", + "dev": true + }, + "ws": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-1.0.1.tgz", + "integrity": "sha1-fQsqLljN3YGQOcKcneZQReGzEOk=", + "dev": true, + "requires": { + "options": "0.0.6", + "ultron": "1.0.2" + } + }, + "xmlhttprequest-ssl": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.1.tgz", + "integrity": "sha1-O3dB/qSoZnWXbpCNKW1ERZYfqmc=", + "dev": true + } + } + }, + "karma-benchmark-json-reporter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/karma-benchmark-json-reporter/-/karma-benchmark-json-reporter-1.0.1.tgz", + "integrity": "sha512-mbt+5HJFN2nhfBIeT0x9yoq07T1Qx4Dlmqlc92TBYY73UNHty/9npG/wd9Er7M1baCrwG8RtO4DBeSJRQKeSeQ==", + "dev": true + }, + "karma-benchmarkjs-reporter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/karma-benchmarkjs-reporter/-/karma-benchmarkjs-reporter-1.0.0.tgz", + "integrity": "sha1-2Y0AMpQsbil0bZr+/C2rFinttk4=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "lodash": "4.17.5", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, "karma-browserify": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/karma-browserify/-/karma-browserify-5.2.0.tgz", @@ -8657,6 +9100,12 @@ "wordwrap": "1.0.0" } }, + "options": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", + "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=", + "dev": true + }, "ora": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/ora/-/ora-1.4.0.tgz", @@ -8883,6 +9332,15 @@ "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", "dev": true }, + "parsejson": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.1.tgz", + "integrity": "sha1-mxDGwNglq1ieaFFTgm3go7oni8w=", + "dev": true, + "requires": { + "better-assert": "1.0.2" + } + }, "parseqs": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", @@ -9068,6 +9526,12 @@ "uniq": "1.0.1" } }, + "platform": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.3.tgz", + "integrity": "sha1-ZGx3ARiZhwtqCQPnXpl+jlHadGE=", + "dev": true + }, "plur": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz", @@ -11968,6 +12432,12 @@ "tmp": "0.0.33" } }, + "utf8": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-2.1.0.tgz", + "integrity": "sha1-DP7FyAUtRKI+OqqQgQToB1+V39U=", + "dev": true + }, "util": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", From 01a88877cca86be37856758992a79fc97a88f0a0 Mon Sep 17 00:00:00 2001 From: etienne Date: Thu, 22 Feb 2018 15:13:51 -0500 Subject: [PATCH 4/5] fixup bench karma config --- bench/karma.conf.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/bench/karma.conf.js b/bench/karma.conf.js index 53222263580..255a3c8ae6a 100644 --- a/bench/karma.conf.js +++ b/bench/karma.conf.js @@ -3,6 +3,12 @@ var pkg = require('../package.json'); var execSync = require('child_process').execSync; +function func(config) { + func.defaultConfig.logLevel = config.LOG_INFO; + func.defaultConfig.browserConsoleLogOptions = {level: 'log'}; + config.set(func.defaultConfig); +} + func.defaultConfig = { // base path that will be used to resolve all patterns (eg. files, exclude) From cca71fa186d17d43a26efce25e129f78107cb0d1 Mon Sep 17 00:00:00 2001 From: etienne Date: Thu, 22 Feb 2018 15:14:17 -0500 Subject: [PATCH 5/5] new benchmarks for 1.34.0 on Chrome 64 --- dist/benchmarks.json | 271 +++++++++++++++++++++---------------------- 1 file changed, 134 insertions(+), 137 deletions(-) diff --git a/dist/benchmarks.json b/dist/benchmarks.json index a4a7d0ddead..e8fb3e91586 100644 --- a/dist/benchmarks.json +++ b/dist/benchmarks.json @@ -1,172 +1,169 @@ { "meta": { - "version": "1.24.2", - "commit": "87fda71a4e16f544dca19ae63c53aef3f87e7c3f\n", - "date": "17:24:16 GMT-0400 (EDT)" + "version": "1.34.0", + "commit": "086729780205212fb55c33f27b5a845692f94593", + "date": "15:09:07 GMT-0500 (EST)" }, "results": [ { - "fullName": "Benchmark: lib function--Lib.cleanNumber-Chrome 57.0.2987 (Linux 0.0.0)", - "browser": "Chrome 57.0.2987 (Linux 0.0.0)", + "fullName": "Benchmark: lib function--Lib.cleanNumber-Chrome 64.0.3282 (Linux 0.0.0)", + "browser": "Chrome 64.0.3282 (Linux 0.0.0)", "suite": "Benchmark: lib functions", "name": "Lib.cleanNumber", - "count": 29676, - "cycles": 4, - "hz": 384570.19438444916, - "hzDeviation": 17008.634032458256, - "mean": 0.0000026003055218582925, - "deviation": 1.364101677043473e-7, - "variance": 1.8607733853128157e-14, - "moe": 3.29102246178391e-8, - "rme": 1.2656291478518267, - "sem": 1.679093092746893e-8, + "count": 62762, + "cycles": 6, + "hz": 803408.2211279911, + "hzDeviation": 31147.317130974046, + "mean": 0.000001244697245686623, + "deviation": 4.9312117524292397e-8, + "variance": 2.431684934729625e-15, + "moe": 1.1988174201948626e-8, + "rme": 0.9631397710160021, + "sem": 6.116415409157463e-9, "sample": [ - 0.00000266208383879229, - 0.0000027968728939210137, - 0.000002763175630138833, - 0.0000025609920474457475, - 0.0000025609920474457475, - 0.0000025609920474457475, - 0.0000025272947836635666, - 0.0000025272947836635666, - 0.000002628386575010109, - 0.0000025272947836635666, - 0.0000025946893112279283, - 0.0000025609920474457475, - 0.0000025609920474457475, - 0.000002628386575010109, - 0.00000266208383879229, - 0.0000025609920474457475, - 0.0000025272947836635666, - 0.0000025272947836635666, - 0.0000025272947836635666, - 0.000002628386575010109, - 0.0000025609920474457475, - 0.0000025946893112279283, - 0.0000025609920474457475, - 0.0000025609920474457475, - 0.0000025609920474457475, - 0.0000025609920474457475, - 0.0000025946893112279283, - 0.0000025272947836635666, - 0.0000025609920474457475, - 0.0000025609920474457475, - 0.0000025609920474457475, - 0.000003571909960911174, - 0.0000025272947836635666, - 0.000002763175630138833, - 0.0000025609920474457475, - 0.00000266208383879229, - 0.0000025946893112279283, - 0.0000025609920474457475, - 0.0000025609920474457475, - 0.0000025609920474457475, - 0.0000025272947836635666, - 0.0000025609920474457475, - 0.000002729478366356652, - 0.0000025946893112279283, - 0.000002628386575010109, - 0.0000025609920474457475, - 0.0000025272947836635666, - 0.0000025609920474457475, - 0.0000025272947836635666, - 0.000002628386575010109, - 0.0000025272947836635666, - 0.0000025609920474457475, - 0.0000025946893112279283, - 0.000002695781102574471, - 0.0000025946893112279283, - 0.0000025609920474457475, - 0.0000025609920474457475, - 0.0000025609920474457475, - 0.0000025609920474457475, - 0.0000025272947836635666, - 0.0000025609920474457475, - 0.0000025609920474457475, - 0.0000025609920474457475, - 0.0000025609920474457475, - 0.0000025946893112279283, - 0.000002729478366356652 + 0.0000012602497585885203, + 0.0000013093503985335276, + 0.0000012766166385701893, + 0.0000012111425111021396, + 0.0000012272910779168348, + 0.0000012111425111021396, + 0.0000012434396447315301, + 0.0000012272910779168348, + 0.0000012272910779168348, + 0.0000012595882115462252, + 0.0000012757367783609204, + 0.0000012918853451756157, + 0.0000012918853451756157, + 0.0000012595882115462252, + 0.0000013403310456197013, + 0.000001404925312878482, + 0.0000015179652805813483, + 0.0000012918853451756157, + 0.0000012272910779168348, + 0.0000012434396447315301, + 0.0000012434396447315301, + 0.0000012111425111021396, + 0.0000012272910779168348, + 0.0000012434396447315301, + 0.0000012111425111021396, + 0.0000012434396447315301, + 0.0000012587234313756732, + 0.000001242790223383576, + 0.0000012268570153914788, + 0.0000012109238073993817, + 0.0000012109238073993817, + 0.000001242790223383576, + 0.000001242790223383576, + 0.000001242790223383576, + 0.000001242790223383576, + 0.0000012109238073993817, + 0.000001242790223383576, + 0.0000012268570153914788, + 0.0000012268570153914788, + 0.0000012268570153914788, + 0.0000012109238073993817, + 0.0000012109238073993817, + 0.000001242790223383576, + 0.000001242790223383576, + 0.0000012109238073993817, + 0.0000012587234313756732, + 0.0000012268570153914788, + 0.0000012109238073993817, + 0.0000012109238073993817, + 0.000001242790223383576, + 0.0000012268570153914788, + 0.0000012109238073993817, + 0.0000012109238073993817, + 0.0000012109238073993817, + 0.0000012268570153914788, + 0.0000012109238073993817, + 0.000001242790223383576, + 0.0000013065230553519646, + 0.0000012109238073993817, + 0.0000012109238073993817, + 0.0000012109238073993817, + 0.000001242790223383576, + 0.0000012268570153914788, + 0.0000012587234313756732, + 0.0000011949905994072847 ] }, { - "fullName": "Benchmark: plotting image mock--17.j-on-Chrome 57.0.2987 (Linux 0.0.0)", - "browser": "Chrome 57.0.2987 (Linux 0.0.0)", + "fullName": "Benchmark: plotting image mock--17.j-on-Chrome 64.0.3282 (Linux 0.0.0)", + "browser": "Chrome 64.0.3282 (Linux 0.0.0)", "suite": "Benchmark: plotting image mocks", "name": "17.json", "count": 2, "cycles": 2, - "hz": 3.2833983172583627, - "hzDeviation": 6.586365198789878, - "mean": 0.30456249999999996, - "deviation": 0.3768417096171055, - "variance": 0.14200967410714288, - "moe": 0.31509761571970124, - "rme": 103.45909812261893, - "sem": 0.13323366415209353, + "hz": 4.085338175215615, + "hzDeviation": 6.425304603128786, + "mean": 0.24477777777777782, + "deviation": 0.3180914875384823, + "variance": 0.10118219444444447, + "moe": 0.24450632342124673, + "rme": 99.8891017154435, + "sem": 0.10603049584616077, "sample": [ - 0.056, - 0.0605, - 0.0915, - 0.1035, - 0.1735, - 0.278, - 0.5185, - 1.155 + 0.099, + 0.0785, + 0.0535, + 0.0555, + 0.0945, + 0.1165, + 0.1915, + 0.5105, + 1.0035 ] }, { - "fullName": "Benchmark: plotting image mock--contour_match_edge--Chrome 57.0.2987 (Linux 0.0.0)", - "browser": "Chrome 57.0.2987 (Linux 0.0.0)", + "fullName": "Benchmark: plotting image mock--contour_match_edge--Chrome 64.0.3282 (Linux 0.0.0)", + "browser": "Chrome 64.0.3282 (Linux 0.0.0)", "suite": "Benchmark: plotting image mocks", "name": "contour_match_edges", "count": 2, "cycles": 2, - "hz": 2.202989771833202, - "hzDeviation": 5.00452373940872, - "mean": 0.45392857142857146, - "deviation": 0.519817229784616, - "variance": 0.2702099523809523, - "moe": 0.48076807368986396, - "rme": 105.91271489627215, - "sem": 0.19647244531665875, + "hz": 2.142966477881525, + "hzDeviation": 4.4391330743125605, + "mean": 0.4666428571428571, + "deviation": 0.522579875416645, + "variance": 0.27308972619047617, + "moe": 0.48332318680019437, + "rme": 103.57453872956867, + "sem": 0.19751662721707983, "sample": [ - 0.083, - 0.0825, - 0.1245, - 0.206, - 0.445, - 0.7355, - 1.501 + 0.096, + 0.09, + 0.133, + 0.269, + 0.412, + 0.735, + 1.5315 ] }, { - "fullName": "Benchmark: plotting large data--cattergl 1e5 pt--Chrome 57.0.2987 (Linux 0.0.0)", - "browser": "Chrome 57.0.2987 (Linux 0.0.0)", + "fullName": "Benchmark: plotting large data--cattergl 1e5 pt--Chrome 64.0.3282 (Linux 0.0.0)", + "browser": "Chrome 64.0.3282 (Linux 0.0.0)", "suite": "Benchmark: plotting large data", "name": "scattergl 1e5 pts", "count": 1, "cycles": 1, - "hz": 1.4579384749963553, - "hzDeviation": 0.8757783387450939, - "mean": 0.6859, - "deviation": 0.24255604163436814, - "variance": 0.05883343333333334, - "moe": 0.17350208461698663, - "rme": 25.29553646551781, - "sem": 0.07670295517992336, + "hz": 1.1568335812262438, + "hzDeviation": 0.6908011723020978, + "mean": 0.8644285714285713, + "deviation": 0.42061853547002936, + "variance": 0.17691995238095234, + "moe": 0.3890212779979738, + "rme": 45.00328781996062, + "sem": 0.1589788630968426, "sample": [ - 0.809, - 0.796, - 0.814, - 0.329, - 0.813, - 0.85, - 0.339, - 0.346, - 0.92, - 0.843 + 0.569, + 0.443, + 1.434, + 1.132, + 1.329, + 0.489, + 0.655 ] } ] -} \ No newline at end of file +}