From 015b0330ba4a1bb90e24474fb6d070b2bf93134e Mon Sep 17 00:00:00 2001 From: Nate Moore Date: Sat, 4 Feb 2023 18:17:26 -0600 Subject: [PATCH] add bench --- .changeset/perfect-coats-rhyme.md | 5 +++++ package.json | 7 +++++- pnpm-lock.yaml | 37 ++++++++++++++++++++++++++++--- scripts/bench.js | 25 +++++++++++++++++++++ src/index.ts | 1 + 5 files changed, 71 insertions(+), 4 deletions(-) create mode 100644 .changeset/perfect-coats-rhyme.md create mode 100644 scripts/bench.js diff --git a/.changeset/perfect-coats-rhyme.md b/.changeset/perfect-coats-rhyme.md new file mode 100644 index 0000000..60bab60 --- /dev/null +++ b/.changeset/perfect-coats-rhyme.md @@ -0,0 +1,5 @@ +--- +"ultraflag": patch +--- + +add benchmarks diff --git a/package.json b/package.json index 86b276f..bc8448e 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "scripts": { "build": "node scripts/build.js && tsc -p .", "lint": "prettier \"**/*.{js,ts,md}\"", + "bench": "node scripts/bench.js", "dev": "vitest", "test": "vitest run" }, @@ -46,14 +47,18 @@ "packageManager": "pnpm@7.6.0", "devDependencies": { "@changesets/cli": "^2.18.1", + "arg": "^5.0.2", + "benchmark": "^2.1.4", "chalk": "^5.1.2", "esbuild": "^0.14.51", "globby": "^13.1.2", "gzip-size": "^7.0.0", + "minimist": "^1.2.7", "npm-run-all": "^4.1.5", "prettier": "^2.5.1", "pretty-bytes": "^6.0.0", "typescript": "^4.7.4", - "vitest": "^0.20.2" + "vitest": "^0.20.2", + "yargs-parser": "^21.1.1" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a4ce9b5..1d0e3d6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2,27 +2,35 @@ lockfileVersion: 5.4 specifiers: '@changesets/cli': ^2.18.1 + arg: ^5.0.2 + benchmark: ^2.1.4 chalk: ^5.1.2 esbuild: ^0.14.51 globby: ^13.1.2 gzip-size: ^7.0.0 + minimist: ^1.2.7 npm-run-all: ^4.1.5 prettier: ^2.5.1 pretty-bytes: ^6.0.0 typescript: ^4.7.4 vitest: ^0.20.2 + yargs-parser: ^21.1.1 devDependencies: '@changesets/cli': 2.24.1 + arg: 5.0.2 + benchmark: 2.1.4 chalk: 5.1.2 esbuild: 0.14.51 globby: 13.1.2 gzip-size: 7.0.0 + minimist: 1.2.7 npm-run-all: 4.1.5 prettier: 2.7.1 pretty-bytes: 6.0.0 typescript: 4.7.4 vitest: 0.20.2 + yargs-parser: 21.1.1 packages: @@ -338,6 +346,10 @@ packages: color-convert: 2.0.1 dev: true + /arg/5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + dev: true + /argparse/1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: @@ -372,6 +384,13 @@ packages: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true + /benchmark/2.1.4: + resolution: {integrity: sha512-l9MlfN4M1K/H2fbhfMy3B7vJd6AGKJVQn2h6Sg/Yx+KckoUA7ewS5Vv6TjSq18ooE1kS9hhAlQRH3AkXIh/aOQ==} + dependencies: + lodash: 4.17.21 + platform: 1.3.6 + dev: true + /better-path-resolve/1.0.0: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} @@ -1368,6 +1387,10 @@ packages: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} dev: true + /lodash/4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: true + /loupe/2.3.4: resolution: {integrity: sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==} dependencies: @@ -1446,6 +1469,10 @@ packages: kind-of: 6.0.3 dev: true + /minimist/1.2.7: + resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} + dev: true + /mixme/0.5.4: resolution: {integrity: sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw==} engines: {node: '>= 8.0.0'} @@ -1643,6 +1670,10 @@ packages: find-up: 4.1.0 dev: true + /platform/1.3.6: + resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==} + dev: true + /postcss/8.4.14: resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} engines: {node: ^10 || ^12 || >=14} @@ -2211,8 +2242,8 @@ packages: decamelize: 1.2.0 dev: true - /yargs-parser/21.0.1: - resolution: {integrity: sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==} + /yargs-parser/21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} dev: true @@ -2243,7 +2274,7 @@ packages: require-directory: 2.1.1 string-width: 4.2.3 y18n: 5.0.8 - yargs-parser: 21.0.1 + yargs-parser: 21.1.1 dev: true /yocto-queue/0.1.0: diff --git a/scripts/bench.js b/scripts/bench.js new file mode 100644 index 0000000..7293479 --- /dev/null +++ b/scripts/bench.js @@ -0,0 +1,25 @@ +import benchmark from "benchmark"; +import { parse as ultraflag } from "../dist/index.js"; +import minimist from 'minimist'; +import yargs from 'yargs-parser'; + +// @ts-ignore +const suite = new benchmark.Suite(); + +const args = `--a=1 --b=2 -c 3 -xyz -c 4`.split(' '); + +suite + .add("ultraflag", () => { + ultraflag(args); + }) + .add("minimist", () => { + minimist(args); + }) + .add("yargs-parser", () => { + yargs(args) + }) + .on("cycle", (event) => { + console.log(String(event.target)); + }); + +suite.run(); diff --git a/src/index.ts b/src/index.ts index 58f958e..1e9cd31 100644 --- a/src/index.ts +++ b/src/index.ts @@ -6,6 +6,7 @@ import type { BooleanType, StringType, Collectable, + Aliases, } from "./types.js"; export { ParseOptions, Args } from "./types.js"; -- 2.51.2