From 305f103ca6322dab9f588aebd735b0930fcc5d20 Mon Sep 17 00:00:00 2001 From: Quramy Date: Mon, 4 Mar 2024 11:14:19 +0900 Subject: [PATCH 1/2] chore: Remove performance testing --- .travis.yml | 9 -- README.md | 11 -- package-lock.json | 369 ---------------------------------------------- package.json | 4 +- tool/perf.js | 111 -------------- 5 files changed, 1 insertion(+), 503 deletions(-) delete mode 100644 .travis.yml delete mode 100755 tool/perf.js diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 42777be0..00000000 --- a/.travis.yml +++ /dev/null @@ -1,9 +0,0 @@ -os: - - linux - -language: node_js - -node_js: - - "12" - -script: npm run perf diff --git a/README.md b/README.md index c1993b5e..95bf5df2 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,6 @@ # img-diff-js [![github actions](https://github.com/reg-viz/img-diff-js/workflows/build/badge.svg)](https://github.com/reg-viz/img-diff-js/actions) -[![Build Status](https://travis-ci.org/reg-viz/img-diff-js.svg?branch=master)](https://travis-ci.org/reg-viz/img-diff-js) [![npm version](https://badge.fury.io/js/img-diff-js.svg)](https://badge.fury.io/js/img-diff-js) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT) @@ -83,16 +82,6 @@ The following codecs are available for input image files. The output image format is PNG only. -## Performance - -| case name | img-diff-js | image-difference | image-diff | -| :-------------------------- | ----------: | ---------------: | ---------: | -| 50 same dimension PNGs | 376 msec | 1967 msec | 3143 msec | -| 50 different dimension PNGs | 274 msec | 2979 msec | 3520 msec | -| 50 same dimension JPEGs | 449 msec | 2422 msec | 4376 msec | - -The above table was captured under [Travis-CI](https://travis-ci.org/reg-viz/img-diff-js). If you want the latest result, check the raw log. - ## Contribute PR or issue is welcome :) diff --git a/package-lock.json b/package-lock.json index c2d84200..939bf5fc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,8 +24,6 @@ "@types/rimraf": "3.0.2", "cp-file": "10.0.0", "husky": "9.0.11", - "image-diff": "2.0.0", - "image-difference": "2.0.7", "jest": "29.7.0", "prettier": "3.2.5", "pretty-quick": "4.0.0", @@ -1484,23 +1482,6 @@ "sprintf-js": "~1.0.2" } }, - "node_modules/array-parallel": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/array-parallel/-/array-parallel-0.1.3.tgz", - "dev": true, - "license": "MIT" - }, - "node_modules/array-series": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/array-series/-/array-series-0.1.5.tgz", - "dev": true, - "license": "MIT" - }, - "node_modules/async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "dev": true - }, "node_modules/babel-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", @@ -1713,20 +1694,6 @@ "dev": true, "license": "MIT" }, - "node_modules/buffered-spawn": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffered-spawn/-/buffered-spawn-1.1.2.tgz", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn-async": "^1.0.1", - "err-code": "^0.1.0", - "q": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -1857,12 +1824,6 @@ "dev": true, "license": "MIT" }, - "node_modules/commander": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "dev": true, - "license": "MIT" - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -1933,22 +1894,6 @@ "node": ">= 8" } }, - "node_modules/cross-spawn-async": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn-async/-/cross-spawn-async-1.0.1.tgz", - "dev": true, - "license": "MIT", - "dependencies": { - "lru-cache": "^2.6.5", - "which": "^1.1.1" - } - }, - "node_modules/cross-spawn-async/node_modules/lru-cache": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "dev": true, - "license": "ISC" - }, "node_modules/cross-spawn/node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -2065,12 +2010,6 @@ "dev": true, "license": "MIT" }, - "node_modules/err-code": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-0.1.2.tgz", - "dev": true, - "license": "MIT" - }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -2334,52 +2273,12 @@ "node": ">=4" } }, - "node_modules/gm": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/gm/-/gm-1.25.0.tgz", - "integrity": "sha512-4kKdWXTtgQ4biIo7hZA396HT062nDVVHPjQcurNZ3o/voYN+o5FUC5kOwuORbpExp3XbTJ3SU7iRipiIhQtovw==", - "dev": true, - "dependencies": { - "array-parallel": "~0.1.3", - "array-series": "~0.1.5", - "cross-spawn": "^4.0.0", - "debug": "^3.1.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/gm/node_modules/cross-spawn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "dev": true, - "license": "MIT", - "dependencies": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "node_modules/gm/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, - "node_modules/graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "dev": true, - "license": "MIT" - }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -2444,204 +2343,6 @@ "node": ">= 4" } }, - "node_modules/image-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/image-diff/-/image-diff-2.0.0.tgz", - "integrity": "sha512-67yraTX1T9U7KzpWRpamjVKkkijP5ktGHnHSqKx4luZ1D5eTvCLDBF6vgxbWafqw8V1ogjYIDc6aOkXxDO0Tlg==", - "dev": true, - "dependencies": { - "async": "~0.2.9", - "buffered-spawn": "~1.1.1", - "commander": "~2.9.0", - "gm": "~1.21.1", - "mkdirp": "~0.3.5", - "tmp": "0.0.23" - }, - "bin": { - "image-diff": "bin/image-diff" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/image-diff/node_modules/commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-readlink": ">= 1.0.0" - }, - "engines": { - "node": ">= 0.6.x" - } - }, - "node_modules/image-diff/node_modules/debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "0.7.1" - } - }, - "node_modules/image-diff/node_modules/gm": { - "version": "1.21.1", - "resolved": "https://registry.npmjs.org/gm/-/gm-1.21.1.tgz", - "dev": true, - "license": "MIT", - "dependencies": { - "array-parallel": "~0.1.3", - "array-series": "~0.1.5", - "debug": "~2.2.0" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/image-diff/node_modules/mkdirp": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "dev": true, - "license": "MIT" - }, - "node_modules/image-diff/node_modules/ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "dev": true - }, - "node_modules/image-difference": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/image-difference/-/image-difference-2.0.7.tgz", - "integrity": "sha1-lVKpdkjPRvHG7oopRssWuyaUc0U=", - "dev": true, - "dependencies": { - "chalk": "^2.0.1", - "commander": "^2.10.0", - "cross-spawn": "^5.1.0", - "gm": "^1.23.0", - "mkdirp": "^0.5.1", - "tmp": "^0.0.31" - }, - "bin": { - "image-difference": "bin/image-difference" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/image-difference/node_modules/ansi-styles": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/image-difference/node_modules/chalk": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.1.0", - "escape-string-regexp": "^1.0.5", - "supports-color": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/image-difference/node_modules/color-convert": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "^1.1.1" - } - }, - "node_modules/image-difference/node_modules/cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "dev": true, - "license": "MIT", - "dependencies": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "node_modules/image-difference/node_modules/has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/image-difference/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/image-difference/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/image-difference/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/image-difference/node_modules/supports-color": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.0.tgz", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/image-difference/node_modules/tmp": { - "version": "0.0.31", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", - "dev": true, - "license": "MIT", - "dependencies": { - "os-tmpdir": "~1.0.1" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/import-local": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", @@ -3606,16 +3307,6 @@ "dev": true, "license": "MIT" }, - "node_modules/lru-cache": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "dev": true, - "license": "ISC", - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -3692,15 +3383,6 @@ "node": "*" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/minipass": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", @@ -3814,15 +3496,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/p-event": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/p-event/-/p-event-5.0.1.tgz", @@ -4195,12 +3868,6 @@ "node": ">= 6" } }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "dev": true, - "license": "ISC" - }, "node_modules/pure-rand": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", @@ -4218,16 +3885,6 @@ ], "license": "MIT" }, - "node_modules/q": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.0.tgz", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, "node_modules/react-is": { "version": "18.1.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", @@ -4597,14 +4254,6 @@ "node": ">=8" } }, - "node_modules/tmp": { - "version": "0.0.23", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.23.tgz", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -4794,18 +4443,6 @@ "makeerror": "1.0.12" } }, - "node_modules/which": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -4872,12 +4509,6 @@ "node": ">=10" } }, - "node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "dev": true, - "license": "ISC" - }, "node_modules/yargs": { "version": "17.5.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", diff --git a/package.json b/package.json index 781b199b..8bfeafe3 100644 --- a/package.json +++ b/package.json @@ -40,15 +40,13 @@ }, "devDependencies": { "@types/jest": "29.5.12", - "@types/rimraf": "3.0.2", "@types/mkdirp": "^1.0.1", "@types/node": "^20.0.0", "@types/pixelmatch": "^5.2.2", "@types/pngjs": "^6.0.0", + "@types/rimraf": "3.0.2", "cp-file": "10.0.0", "husky": "9.0.11", - "image-diff": "2.0.0", - "image-difference": "2.0.7", "jest": "29.7.0", "prettier": "3.2.5", "pretty-quick": "4.0.0", diff --git a/tool/perf.js b/tool/perf.js deleted file mode 100755 index e72a2e6f..00000000 --- a/tool/perf.js +++ /dev/null @@ -1,111 +0,0 @@ -#!/usr/bin/env node - -const path = require("path"); -const rimraf = require("rimraf"); -const mkdirp = require("mkdirp"); -const { imgDiff } = require("../"); -const imageDiff = require("image-diff"); -const imageDifference = require("image-difference").default; - -function imageDiffPromise(options) { - return new Promise((resolve, reject) => { - imageDiff( - { - actualImage: options.actualFilename, - expectedImage: options.expectedFilename, - diffImage: options.diffFilename, - }, - (err, result) => { - if (err) return reject(err); - resolve(result); - }, - ); - }); -} - -function wrapLap(name, p) { - return () => { - const st = Date.now(); - return p().then(() => { - const end = Date.now(); - const elapse = end - st; - return { name, time: elapse }; - }); - }; -} - -function comparisonComparison(opt) { - return () => { - const { actualFilename, expectedFilename } = opt; - const subdirName = opt.name.replace(/\s+/g, "_"); - const arr = new Array(opt.iterationCount || 50) - .join("+") - .split("+") - .map((_, i) => i); - - const p1 = () => - Promise.all( - arr.map(i => - imgDiff({ actualFilename, expectedFilename, diffFilename: `.performance/${subdirName}/diff_1_${i}.png` }), - ), - ); - const p2 = () => - Promise.all( - arr.map(i => - imageDifference({ - actualFilename, - expectedFilename, - diffFilename: `.performance/${subdirName}/diff_2_${i}.png`, - }), - ), - ); - const p3 = () => - Promise.all( - arr.map(i => - imageDiffPromise({ - actualFilename, - expectedFilename, - diffFilename: `.performance/${subdirName}/diff_3_${i}.png`, - }), - ), - ); - - mkdirp.sync(`.performance/${subdirName}`); - return [wrapLap("img-diff-js", p1), wrapLap("image-difference", p2), wrapLap("image-diff", p3)] - .reduce((queue, p) => queue.then(result => p().then(x => [...result, x])), Promise.resolve([])) - .then(results => ({ name: opt.name, results })); - }; -} - -rimraf.sync(".performance"); -mkdirp.sync(".performance"); - -function images(strings, ...values) { - return path.resolve(__dirname, "../test-images/" + strings[0]); -} - -[ - comparisonComparison({ - name: "50 same dimension PNGs", - actualFilename: images`actual.png`, - expectedFilename: images`expected.png`, - }), - comparisonComparison({ - name: "50 different dimension PNGs", - actualFilename: images`actual_wide.png`, - expectedFilename: images`expected.png`, - }), - comparisonComparison({ - name: "50 same dimension JPEGs", - actualFilename: images`actual.jpg`, - expectedFilename: images`expected.jpg`, - }), -] - .reduce((queue, p) => queue.then(x => p().then(y => [...x, y])), Promise.resolve([])) - .then(resuletsList => { - console.log(["", "case name", ...resuletsList[0].results.map(r => r.name), ""].join(" | ")); - console.log([" ", ":---", ...resuletsList[0].results.map(() => "---:"), ""].join("|")); - resuletsList.forEach(item => { - console.log(["", item.name, ...item.results.map(r => r.time + " msec"), ""].join(" | ")); - }); - }); From 5db77a3ad9ba7058d0594aefbeb5653894b618ea Mon Sep 17 00:00:00 2001 From: Quramy Date: Mon, 4 Mar 2024 11:15:44 +0900 Subject: [PATCH 2/2] fix: prettier target files --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8bfeafe3..531ae20d 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "build": "tsc", "test": "jest", "test:ci": "jest --coverage", - "prettier": "prettier \"*.md\" \"*.json\" \"*.yml\" \"src/**/*\" \"tool/**/*\"", + "prettier": "prettier \"*.md\" \"*.json\" \"*.yml\" \"src/**/*\"", "format": "npm run prettier -- --write", "format:check": "npm run prettier -- --check", "lint": "npm run format:check",