@thi.ng/bench 2.1.6 → 3.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +69 -36
- package/README.md +23 -8
- package/api.d.ts +1 -0
- package/bench.d.ts +1 -1
- package/bench.js +1 -1
- package/benchmark.d.ts +1 -1
- package/benchmark.js +2 -2
- package/format/csv.d.ts +1 -1
- package/format/csv.js +1 -1
- package/format/default.d.ts +1 -1
- package/format/default.js +1 -1
- package/format/markdown.d.ts +1 -1
- package/format/markdown.js +1 -1
- package/index.d.ts +9 -9
- package/index.js +9 -9
- package/now.d.ts +11 -1
- package/now.js +10 -0
- package/package.json +55 -23
- package/suite.d.ts +1 -1
- package/suite.js +1 -1
- package/timed.d.ts +1 -1
- package/timed.js +2 -7
- package/lib/index.js +0 -215
- package/lib/index.js.map +0 -1
- package/lib/index.umd.js +0 -1
- package/lib/index.umd.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
-
## [
|
|
6
|
+
## [3.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/bench@3.0.2...@thi.ng/bench@3.0.3) (2021-10-15)
|
|
7
7
|
|
|
8
8
|
**Note:** Version bump only for package @thi.ng/bench
|
|
9
9
|
|
|
@@ -11,76 +11,109 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
## [3.0.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/bench@3.0.1...@thi.ng/bench@3.0.2) (2021-10-15)
|
|
15
|
+
|
|
16
|
+
**Note:** Version bump only for package @thi.ng/bench
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
## [3.0.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/bench@3.0.0...@thi.ng/bench@3.0.1) (2021-10-13)
|
|
23
|
+
|
|
24
|
+
**Note:** Version bump only for package @thi.ng/bench
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
# [3.0.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/bench@2.1.6...@thi.ng/bench@3.0.0) (2021-10-12)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
### Build System
|
|
34
|
+
|
|
35
|
+
* major update of ALL pkgs (export maps, ESM only) ([0d1d6ea](https://github.com/thi-ng/umbrella/commit/0d1d6ea9fab2a645d6c5f2bf2591459b939c09b6))
|
|
15
36
|
|
|
16
37
|
|
|
17
38
|
### Features
|
|
18
39
|
|
|
19
|
-
* **bench:** add
|
|
40
|
+
* **bench:** add timeDiff, Timestamp type ([c612de0](https://github.com/thi-ng/umbrella/commit/c612de0574d59d9e0951443ae98b8bd14c3a0a09))
|
|
20
41
|
|
|
21
42
|
|
|
43
|
+
### BREAKING CHANGES
|
|
22
44
|
|
|
45
|
+
* discontinue CommonJS & UMD versions
|
|
23
46
|
|
|
47
|
+
- only ESM modules will be published from now on
|
|
48
|
+
- CJS obsolete due to ESM support in recent versions of node:
|
|
49
|
+
- i.e. launch NodeJS via:
|
|
50
|
+
- `node --experimental-specifier-resolution=node --experimental-repl-await`
|
|
51
|
+
- in the node REPL use `await import(...)` instead of `require()`
|
|
52
|
+
- UMD obsolete due to widespread browser support for ESM
|
|
24
53
|
|
|
25
|
-
|
|
54
|
+
Also:
|
|
55
|
+
- normalize/restructure/reorg all package.json files
|
|
56
|
+
- cleanup all build scripts, remove obsolete
|
|
57
|
+
- switch from mocha to @thi.ng/testament for all tests
|
|
26
58
|
|
|
27
59
|
|
|
28
|
-
### Bug Fixes
|
|
29
60
|
|
|
30
|
-
* **bench:** fallback handlingin now() ([6494851](https://github.com/thi-ng/umbrella/commit/64948518a6412cabf53664ac9f89bac2b7ef6892))
|
|
31
|
-
* **bench:** update timedResult() to always downscale to ms ([fb2c632](https://github.com/thi-ng/umbrella/commit/fb2c6327358ccaf93314d2cdbfd3f8ff04becbd1))
|
|
32
61
|
|
|
33
62
|
|
|
34
63
|
|
|
64
|
+
# [2.1.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/bench@2.0.31...@thi.ng/bench@2.1.0) (2021-03-12)
|
|
35
65
|
|
|
66
|
+
### Features
|
|
36
67
|
|
|
37
|
-
|
|
68
|
+
- **bench:** add suite & formatters, update benchmark() ([5ea02bd](https://github.com/thi-ng/umbrella/commit/5ea02bd0cfe71ff388d24906b7ce2a7ce4e72ce8))
|
|
38
69
|
|
|
39
|
-
|
|
70
|
+
## [2.0.6](https://github.com/thi-ng/umbrella/compare/@thi.ng/bench@2.0.5...@thi.ng/bench@2.0.6) (2020-04-03)
|
|
40
71
|
|
|
41
|
-
|
|
72
|
+
### Bug Fixes
|
|
42
73
|
|
|
43
|
-
|
|
74
|
+
- **bench:** fallback handlingin now() ([6494851](https://github.com/thi-ng/umbrella/commit/64948518a6412cabf53664ac9f89bac2b7ef6892))
|
|
75
|
+
- **bench:** update timedResult() to always downscale to ms ([fb2c632](https://github.com/thi-ng/umbrella/commit/fb2c6327358ccaf93314d2cdbfd3f8ff04becbd1))
|
|
44
76
|
|
|
45
|
-
|
|
77
|
+
# [2.0.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/bench@1.0.11...@thi.ng/bench@2.0.0) (2020-01-24)
|
|
46
78
|
|
|
47
|
-
###
|
|
79
|
+
### Bug Fixes
|
|
48
80
|
|
|
49
|
-
|
|
50
|
-
uses ES BigInt timestamps now (in Node via `process.hrtime.bigint()`).
|
|
81
|
+
- **bench:** update now() to only OPTIONALLY use bigint timestamps ([7ac391b](https://github.com/thi-ng/umbrella/commit/7ac391b58b7e8b3b6fdc458d1edda6ca441d379b))
|
|
51
82
|
|
|
52
|
-
|
|
83
|
+
### Features
|
|
53
84
|
|
|
54
|
-
|
|
85
|
+
- **bench:** add types, benchmark(), bigint timestamps, restructure ([e0af94c](https://github.com/thi-ng/umbrella/commit/e0af94cfbedea46a4131ec8243f2553e49a5e644))
|
|
55
86
|
|
|
56
|
-
|
|
87
|
+
### BREAKING CHANGES
|
|
57
88
|
|
|
58
|
-
|
|
89
|
+
- **bench:** Though no public API change, this library internally uses ES BigInt timestamps now (in Node via `process.hrtime.bigint()`).
|
|
59
90
|
|
|
60
|
-
|
|
91
|
+
# [1.0.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/bench@0.3.1...@thi.ng/bench@1.0.0) (2019-01-21)
|
|
61
92
|
|
|
62
|
-
|
|
63
|
-
`scripts/bundle-module` to build minified CJS & UMD bundles in `/lib`
|
|
64
|
-
- all imports MUST be updated to only refer to package level
|
|
65
|
-
(not individual files anymore). tree shaking in user land will get rid of
|
|
66
|
-
all unused imported symbols.
|
|
93
|
+
### Build System
|
|
67
94
|
|
|
68
|
-
|
|
95
|
+
- update package build scripts & outputs, imports in ~50 packages ([b54b703](https://github.com/thi-ng/umbrella/commit/b54b703))
|
|
69
96
|
|
|
70
|
-
###
|
|
97
|
+
### BREAKING CHANGES
|
|
71
98
|
|
|
72
|
-
|
|
99
|
+
- enabled multi-outputs (ES6 modules, CJS, UMD)
|
|
100
|
+
- build scripts now first build ES6 modules in package root, then call `scripts/bundle-module` to build minified CJS & UMD bundles in `/lib`
|
|
101
|
+
- all imports MUST be updated to only refer to package level (not individual files anymore). tree shaking in user land will get rid of all unused imported symbols.
|
|
73
102
|
|
|
74
|
-
|
|
75
|
-
# [0.2.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/bench@0.1.5...@thi.ng/bench@0.2.0) (2018-08-28)
|
|
103
|
+
# [0.3.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/bench@0.2.4...@thi.ng/bench@0.3.0) (2018-10-21)
|
|
76
104
|
|
|
77
|
-
###
|
|
105
|
+
### Features
|
|
78
106
|
|
|
79
|
-
|
|
107
|
+
- **bench:** add timedResult() / benchResult() ([0cf708f](https://github.com/thi-ng/umbrella/commit/0cf708f))
|
|
80
108
|
|
|
81
|
-
|
|
82
|
-
# 0.1.0 (2018-05-10)
|
|
109
|
+
# [0.2.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/bench@0.1.5...@thi.ng/bench@0.2.0) (2018-08-28)
|
|
83
110
|
|
|
84
|
-
###
|
|
111
|
+
### Features
|
|
112
|
+
|
|
113
|
+
- **bench:** add opt prefix arg, update docs ([4a37367](https://github.com/thi-ng/umbrella/commit/4a37367))
|
|
114
|
+
|
|
115
|
+
# 0.1.0 (2018-05-10)
|
|
116
|
+
|
|
117
|
+
### Features
|
|
85
118
|
|
|
86
|
-
|
|
119
|
+
- **bench:** add new package [@thi](https://github.com/thi).ng/bench ([9466d4b](https://github.com/thi-ng/umbrella/commit/9466d4b))
|
package/README.md
CHANGED
|
@@ -51,15 +51,24 @@ still only sourced via `Date.now()`.
|
|
|
51
51
|
yarn add @thi.ng/bench
|
|
52
52
|
```
|
|
53
53
|
|
|
54
|
+
ES module import:
|
|
55
|
+
|
|
54
56
|
```html
|
|
55
|
-
|
|
56
|
-
|
|
57
|
+
<script type="module" src="https://cdn.skypack.dev/@thi.ng/bench"></script>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
[Skypack documentation](https://docs.skypack.dev/)
|
|
61
|
+
|
|
62
|
+
For Node.js REPL:
|
|
63
|
+
|
|
64
|
+
```text
|
|
65
|
+
# with flag only for < v16
|
|
66
|
+
node --experimental-repl-await
|
|
57
67
|
|
|
58
|
-
|
|
59
|
-
<script src="https://unpkg.com/@thi.ng/bench/lib/index.umd.js" crossorigin></script>
|
|
68
|
+
> const bench = await import("@thi.ng/bench");
|
|
60
69
|
```
|
|
61
70
|
|
|
62
|
-
Package sizes (gzipped, pre-treeshake): ESM: 1.
|
|
71
|
+
Package sizes (gzipped, pre-treeshake): ESM: 1.39 KB
|
|
63
72
|
|
|
64
73
|
## Dependencies
|
|
65
74
|
|
|
@@ -73,9 +82,15 @@ directory are using this package.
|
|
|
73
82
|
|
|
74
83
|
A selection:
|
|
75
84
|
|
|
76
|
-
| Screenshot | Description
|
|
77
|
-
|
|
78
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/
|
|
85
|
+
| Screenshot | Description | Live demo | Source |
|
|
86
|
+
|:--------------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------|:---------------------------------------------------------|:--------------------------------------------------------------------------------------|
|
|
87
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/geom-knn.jpg" width="240"/> | Doodle w/ K-nearest neighbor search result visualization | [Demo](https://demo.thi.ng/umbrella/geom-knn/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/geom-knn) |
|
|
88
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/geom-voronoi-mst.jpg" width="240"/> | Poisson-disk shape-aware sampling, Voronoi & Minimum Spanning Tree visualization | [Demo](https://demo.thi.ng/umbrella/geom-voronoi-mst/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/geom-voronoi-mst) |
|
|
89
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/markdown-parser.jpg" width="240"/> | Minimal Markdown to Hiccup to HTML parser / transformer | [Demo](https://demo.thi.ng/umbrella/markdown/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/markdown) |
|
|
90
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/parse-playground.png" width="240"/> | Parser grammar livecoding editor/playground & codegen | [Demo](https://demo.thi.ng/umbrella/parse-playground/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/parse-playground) |
|
|
91
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/pixel-sorting.png" width="240"/> | Interactive pixel sorting tool using thi.ng/color & thi.ng/pixel | [Demo](https://demo.thi.ng/umbrella/pixel-sorting/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/pixel-sorting) |
|
|
92
|
+
| | Full umbrella repo doc string search w/ paginated results | [Demo](https://demo.thi.ng/umbrella/rdom-search-docs/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/rdom-search-docs) |
|
|
93
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/shader-ast-workers.jpg" width="240"/> | Fork-join worker-based raymarch renderer | [Demo](https://demo.thi.ng/umbrella/shader-ast-workers/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/shader-ast-workers) |
|
|
79
94
|
|
|
80
95
|
## API
|
|
81
96
|
|
package/api.d.ts
CHANGED
package/bench.d.ts
CHANGED
package/bench.js
CHANGED
package/benchmark.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { BenchmarkOpts, BenchmarkResult } from "./api";
|
|
1
|
+
import type { BenchmarkOpts, BenchmarkResult } from "./api.js";
|
|
2
2
|
export declare const DEFAULT_OPTS: BenchmarkOpts;
|
|
3
3
|
export declare const benchmark: (fn: () => void, opts?: Partial<BenchmarkOpts> | undefined) => BenchmarkResult;
|
|
4
4
|
/**
|
package/benchmark.js
CHANGED
package/format/csv.d.ts
CHANGED
package/format/csv.js
CHANGED
package/format/default.d.ts
CHANGED
package/format/default.js
CHANGED
package/format/markdown.d.ts
CHANGED
package/format/markdown.js
CHANGED
package/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export * from "./api";
|
|
2
|
-
export * from "./bench";
|
|
3
|
-
export * from "./benchmark";
|
|
4
|
-
export * from "./now";
|
|
5
|
-
export * from "./suite";
|
|
6
|
-
export * from "./timed";
|
|
7
|
-
export * from "./format/csv";
|
|
8
|
-
export * from "./format/default";
|
|
9
|
-
export * from "./format/markdown";
|
|
1
|
+
export * from "./api.js";
|
|
2
|
+
export * from "./bench.js";
|
|
3
|
+
export * from "./benchmark.js";
|
|
4
|
+
export * from "./now.js";
|
|
5
|
+
export * from "./suite.js";
|
|
6
|
+
export * from "./timed.js";
|
|
7
|
+
export * from "./format/csv.js";
|
|
8
|
+
export * from "./format/default.js";
|
|
9
|
+
export * from "./format/markdown.js";
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
package/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export * from "./api";
|
|
2
|
-
export * from "./bench";
|
|
3
|
-
export * from "./benchmark";
|
|
4
|
-
export * from "./now";
|
|
5
|
-
export * from "./suite";
|
|
6
|
-
export * from "./timed";
|
|
7
|
-
export * from "./format/csv";
|
|
8
|
-
export * from "./format/default";
|
|
9
|
-
export * from "./format/markdown";
|
|
1
|
+
export * from "./api.js";
|
|
2
|
+
export * from "./bench.js";
|
|
3
|
+
export * from "./benchmark.js";
|
|
4
|
+
export * from "./now.js";
|
|
5
|
+
export * from "./suite.js";
|
|
6
|
+
export * from "./timed.js";
|
|
7
|
+
export * from "./format/csv.js";
|
|
8
|
+
export * from "./format/default.js";
|
|
9
|
+
export * from "./format/markdown.js";
|
package/now.d.ts
CHANGED
|
@@ -1,7 +1,17 @@
|
|
|
1
|
+
import type { Fn0, FnU2 } from "@thi.ng/api";
|
|
2
|
+
import type { Timestamp } from "./api.js";
|
|
1
3
|
/**
|
|
2
4
|
* If available, returns wrapper for `process.hrtime.bigint()` else
|
|
3
5
|
* falls back to `Date.now()`. In all cases, returns a nanosec-scale
|
|
4
6
|
* timestamp, either as `bigint` or `number`.
|
|
5
7
|
*/
|
|
6
|
-
export declare const now:
|
|
8
|
+
export declare const now: Fn0<Timestamp>;
|
|
9
|
+
/**
|
|
10
|
+
* Returns the difference in milliseconds between 2 given
|
|
11
|
+
* {@link Timestamp}s.
|
|
12
|
+
*
|
|
13
|
+
* @param a
|
|
14
|
+
* @param b
|
|
15
|
+
*/
|
|
16
|
+
export declare const timeDiff: FnU2<Timestamp, number>;
|
|
7
17
|
//# sourceMappingURL=now.d.ts.map
|
package/now.js
CHANGED
|
@@ -10,3 +10,13 @@ export const now = typeof BigInt !== "undefined"
|
|
|
10
10
|
? () => process.hrtime.bigint()
|
|
11
11
|
: () => BigInt(Date.now() * 1e6)
|
|
12
12
|
: () => Date.now() * 1e6;
|
|
13
|
+
/**
|
|
14
|
+
* Returns the difference in milliseconds between 2 given
|
|
15
|
+
* {@link Timestamp}s.
|
|
16
|
+
*
|
|
17
|
+
* @param a
|
|
18
|
+
* @param b
|
|
19
|
+
*/
|
|
20
|
+
export const timeDiff = (a, b) => (typeof BigInt !== "undefined"
|
|
21
|
+
? Number(b - a)
|
|
22
|
+
: b - a) * 1e-6;
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thi.ng/bench",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.3",
|
|
4
4
|
"description": "Benchmarking utilities w/ various statistics & formatters (CSV, Markdown etc.)",
|
|
5
|
+
"type": "module",
|
|
5
6
|
"module": "./index.js",
|
|
6
|
-
"main": "./lib/index.js",
|
|
7
|
-
"umd:main": "./lib/index.umd.js",
|
|
8
7
|
"typings": "./index.d.ts",
|
|
8
|
+
"sideEffects": false,
|
|
9
9
|
"repository": {
|
|
10
10
|
"type": "git",
|
|
11
11
|
"url": "https://github.com/thi-ng/umbrella.git"
|
|
@@ -24,28 +24,21 @@
|
|
|
24
24
|
"author": "Karsten Schmidt <k+npm@thi.ng>",
|
|
25
25
|
"license": "Apache-2.0",
|
|
26
26
|
"scripts": {
|
|
27
|
-
"build": "yarn clean &&
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"build:test": "rimraf build && tsc -p test/tsconfig.json",
|
|
31
|
-
"build:check": "tsc --isolatedModules --noEmit",
|
|
32
|
-
"test": "mocha test",
|
|
33
|
-
"cover": "nyc mocha test && nyc report --reporter=lcov",
|
|
34
|
-
"clean": "rimraf *.js *.d.ts *.map .nyc_output build coverage doc lib",
|
|
35
|
-
"doc:readme": "ts-node -P ../../tools/tsconfig.json ../../tools/src/readme.ts",
|
|
36
|
-
"doc": "typedoc --excludePrivate --out doc --theme ../../tools/doc/typedoc-theme src/index.ts",
|
|
27
|
+
"build": "yarn clean && tsc --declaration",
|
|
28
|
+
"clean": "rimraf *.js *.d.ts *.map doc",
|
|
29
|
+
"doc": "typedoc --excludePrivate --excludeInternal --out doc src/index.ts",
|
|
37
30
|
"doc:ae": "mkdir -p .ae/doc .ae/temp && node_modules/.bin/api-extractor run --local --verbose",
|
|
38
|
-
"
|
|
31
|
+
"doc:readme": "yarn doc:stats && ../../scripts/node-esm ../../tools/src/readme.ts",
|
|
32
|
+
"doc:stats": "../../scripts/node-esm ../../tools/src/module-stats.ts",
|
|
33
|
+
"pub": "yarn build && yarn publish --access public",
|
|
34
|
+
"test": "testament test"
|
|
39
35
|
},
|
|
40
36
|
"dependencies": {
|
|
41
|
-
"@thi.ng/api": "^
|
|
37
|
+
"@thi.ng/api": "^8.0.3"
|
|
38
|
+
},
|
|
39
|
+
"devDependencies": {
|
|
40
|
+
"@thi.ng/testament": "^0.1.3"
|
|
42
41
|
},
|
|
43
|
-
"files": [
|
|
44
|
-
"*.js",
|
|
45
|
-
"*.d.ts",
|
|
46
|
-
"lib",
|
|
47
|
-
"format"
|
|
48
|
-
],
|
|
49
42
|
"keywords": [
|
|
50
43
|
"benchmark",
|
|
51
44
|
"bigint",
|
|
@@ -68,7 +61,46 @@
|
|
|
68
61
|
"process": false,
|
|
69
62
|
"setTimeout": false
|
|
70
63
|
},
|
|
71
|
-
"
|
|
64
|
+
"engines": {
|
|
65
|
+
"node": ">=12.7"
|
|
66
|
+
},
|
|
67
|
+
"files": [
|
|
68
|
+
"*.js",
|
|
69
|
+
"*.d.ts",
|
|
70
|
+
"format"
|
|
71
|
+
],
|
|
72
|
+
"exports": {
|
|
73
|
+
".": {
|
|
74
|
+
"import": "./index.js"
|
|
75
|
+
},
|
|
76
|
+
"./api": {
|
|
77
|
+
"import": "./api.js"
|
|
78
|
+
},
|
|
79
|
+
"./bench": {
|
|
80
|
+
"import": "./bench.js"
|
|
81
|
+
},
|
|
82
|
+
"./benchmark": {
|
|
83
|
+
"import": "./benchmark.js"
|
|
84
|
+
},
|
|
85
|
+
"./format/csv": {
|
|
86
|
+
"import": "./format/csv.js"
|
|
87
|
+
},
|
|
88
|
+
"./format/default": {
|
|
89
|
+
"import": "./format/default.js"
|
|
90
|
+
},
|
|
91
|
+
"./format/markdown": {
|
|
92
|
+
"import": "./format/markdown.js"
|
|
93
|
+
},
|
|
94
|
+
"./now": {
|
|
95
|
+
"import": "./now.js"
|
|
96
|
+
},
|
|
97
|
+
"./suite": {
|
|
98
|
+
"import": "./suite.js"
|
|
99
|
+
},
|
|
100
|
+
"./timed": {
|
|
101
|
+
"import": "./timed.js"
|
|
102
|
+
}
|
|
103
|
+
},
|
|
72
104
|
"thi.ng": {
|
|
73
105
|
"related": [
|
|
74
106
|
"csv",
|
|
@@ -76,5 +108,5 @@
|
|
|
76
108
|
],
|
|
77
109
|
"year": 2018
|
|
78
110
|
},
|
|
79
|
-
"gitHead": "
|
|
111
|
+
"gitHead": "1fb38cac74d6c009d96855c28784a267a81badf1"
|
|
80
112
|
}
|
package/suite.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { Benchmark, BenchmarkResult, BenchmarkSuiteOpts } from "./api";
|
|
1
|
+
import type { Benchmark, BenchmarkResult, BenchmarkSuiteOpts } from "./api.js";
|
|
2
2
|
export declare const suite: (cases: Benchmark[], opts?: Partial<BenchmarkSuiteOpts> | undefined) => BenchmarkResult[];
|
|
3
3
|
//# sourceMappingURL=suite.d.ts.map
|
package/suite.js
CHANGED
package/timed.d.ts
CHANGED
package/timed.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { now } from "./now";
|
|
1
|
+
import { now, timeDiff } from "./now.js";
|
|
2
2
|
/**
|
|
3
3
|
* Calls function `fn` without args, prints elapsed time and returns
|
|
4
4
|
* fn's result. The optional `prefix` will be displayed with the output,
|
|
@@ -22,10 +22,5 @@ export const timedResult = (fn) => {
|
|
|
22
22
|
const t0 = now();
|
|
23
23
|
const res = fn();
|
|
24
24
|
const t1 = now();
|
|
25
|
-
return [
|
|
26
|
-
res,
|
|
27
|
-
(typeof BigInt !== "undefined"
|
|
28
|
-
? Number(t1 - t0)
|
|
29
|
-
: t1 - t0) * 1e-6,
|
|
30
|
-
];
|
|
25
|
+
return [res, timeDiff(t0, t1)];
|
|
31
26
|
};
|
package/lib/index.js
DELETED
|
@@ -1,215 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
const FLOAT = (x) => x.toFixed(2);
|
|
6
|
-
const EMPTY = () => "";
|
|
7
|
-
|
|
8
|
-
const now = typeof BigInt !== "undefined"
|
|
9
|
-
? typeof process !== "undefined" &&
|
|
10
|
-
typeof process.hrtime !== "undefined" &&
|
|
11
|
-
typeof process.hrtime.bigint === "function"
|
|
12
|
-
? () => process.hrtime.bigint()
|
|
13
|
-
: () => BigInt(Date.now() * 1e6)
|
|
14
|
-
: () => Date.now() * 1e6;
|
|
15
|
-
|
|
16
|
-
const timed = (fn, prefix = "") => {
|
|
17
|
-
const [res, t] = timedResult(fn);
|
|
18
|
-
console.log(`${prefix} ${t.toFixed(2)}ms`);
|
|
19
|
-
return res;
|
|
20
|
-
};
|
|
21
|
-
const timedResult = (fn) => {
|
|
22
|
-
const t0 = now();
|
|
23
|
-
const res = fn();
|
|
24
|
-
const t1 = now();
|
|
25
|
-
return [
|
|
26
|
-
res,
|
|
27
|
-
(typeof BigInt !== "undefined"
|
|
28
|
-
? Number(t1 - t0)
|
|
29
|
-
: t1 - t0) * 1e-6,
|
|
30
|
-
];
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
const bench = (fn, n = 1e6, prefix = "") => {
|
|
34
|
-
let res;
|
|
35
|
-
return timed(() => {
|
|
36
|
-
while (n-- > 0) {
|
|
37
|
-
res = fn();
|
|
38
|
-
}
|
|
39
|
-
return res;
|
|
40
|
-
}, prefix);
|
|
41
|
-
};
|
|
42
|
-
const benchResult = (fn, n = 1e6) => {
|
|
43
|
-
let res;
|
|
44
|
-
return timedResult(() => {
|
|
45
|
-
while (n-- > 0) {
|
|
46
|
-
res = fn();
|
|
47
|
-
}
|
|
48
|
-
return res;
|
|
49
|
-
});
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
const FORMAT_DEFAULT = {
|
|
53
|
-
prefix: EMPTY,
|
|
54
|
-
start: ({ title }) => `benchmarking: ${title}`,
|
|
55
|
-
warmup: (t, { warmup }) => `\twarmup... ${FLOAT(t)}ms (${warmup} runs)`,
|
|
56
|
-
result: ({ iter, size, total, mean, median, min, max, q1, q3, sd }) =>
|
|
57
|
-
`\ttotal: ${FLOAT(total)}ms, runs: ${iter} (@ ${size} calls/iter)
|
|
58
|
-
\tmean: ${FLOAT(mean)}ms, median: ${FLOAT(median)}ms, range: [${FLOAT(min)}..${FLOAT(max)}]
|
|
59
|
-
\tq1: ${FLOAT(q1)}ms, q3: ${FLOAT(q3)}ms
|
|
60
|
-
\tsd: ${FLOAT(sd)}%`,
|
|
61
|
-
total: (res) => {
|
|
62
|
-
const fastest = res.slice().sort((a, b) => a.mean - b.mean)[0];
|
|
63
|
-
return `Fastest: "${fastest.title}"`;
|
|
64
|
-
},
|
|
65
|
-
suffix: () => `---`,
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
const DEFAULT_OPTS = {
|
|
69
|
-
title: "benchmark",
|
|
70
|
-
iter: 1e3,
|
|
71
|
-
size: 1,
|
|
72
|
-
warmup: 10,
|
|
73
|
-
output: true,
|
|
74
|
-
format: FORMAT_DEFAULT,
|
|
75
|
-
};
|
|
76
|
-
const benchmark = (fn, opts) => {
|
|
77
|
-
const _opts = { ...DEFAULT_OPTS, ...opts };
|
|
78
|
-
const { iter, size, warmup, output, format } = _opts;
|
|
79
|
-
output && outputString(format.start(_opts));
|
|
80
|
-
const t = benchResult(fn, warmup * size)[1];
|
|
81
|
-
output && outputString(format.warmup(t, _opts));
|
|
82
|
-
const samples = [];
|
|
83
|
-
for (let i = iter; --i >= 0;) {
|
|
84
|
-
samples.push(benchResult(fn, size)[1]);
|
|
85
|
-
}
|
|
86
|
-
samples.sort((a, b) => a - b);
|
|
87
|
-
const total = samples.reduce((acc, x) => acc + x, 0);
|
|
88
|
-
const mean = total / iter;
|
|
89
|
-
const median = samples[iter >> 1];
|
|
90
|
-
const min = samples[0];
|
|
91
|
-
const max = samples[iter - 1];
|
|
92
|
-
const q1 = samples[Math.ceil(iter * 0.25)];
|
|
93
|
-
const q3 = samples[Math.ceil(iter * 0.75)];
|
|
94
|
-
const sd = (Math.sqrt(samples.reduce((acc, x) => acc + (mean - x) ** 2, 0) / iter) /
|
|
95
|
-
mean) *
|
|
96
|
-
100;
|
|
97
|
-
const res = {
|
|
98
|
-
title: _opts.title,
|
|
99
|
-
iter,
|
|
100
|
-
size,
|
|
101
|
-
total,
|
|
102
|
-
mean,
|
|
103
|
-
median,
|
|
104
|
-
min,
|
|
105
|
-
max,
|
|
106
|
-
q1,
|
|
107
|
-
q3,
|
|
108
|
-
sd,
|
|
109
|
-
};
|
|
110
|
-
output && outputString(format.result(res));
|
|
111
|
-
return res;
|
|
112
|
-
};
|
|
113
|
-
const outputString = (str) => str !== "" && console.log(str);
|
|
114
|
-
|
|
115
|
-
const suite = (cases, opts) => {
|
|
116
|
-
const _opts = {
|
|
117
|
-
...DEFAULT_OPTS,
|
|
118
|
-
...opts,
|
|
119
|
-
};
|
|
120
|
-
_opts.output && outputString(_opts.format.prefix());
|
|
121
|
-
const results = [];
|
|
122
|
-
for (let c of cases) {
|
|
123
|
-
results.push(benchmark(c.fn, { ..._opts, ...c.opts, title: c.title }));
|
|
124
|
-
}
|
|
125
|
-
_opts.output && outputString(_opts.format.total(results));
|
|
126
|
-
_opts.output && outputString(_opts.format.suffix());
|
|
127
|
-
return results;
|
|
128
|
-
};
|
|
129
|
-
|
|
130
|
-
const FORMAT_CSV = {
|
|
131
|
-
prefix: () => `Title,Iterations,Size,Total,Mean,Median,Min,Max,Q1,Q3,SD%`,
|
|
132
|
-
start: EMPTY,
|
|
133
|
-
warmup: EMPTY,
|
|
134
|
-
result: (res) => `"${res.title}",${res.iter},${res.size},${[
|
|
135
|
-
res.total,
|
|
136
|
-
res.mean,
|
|
137
|
-
res.median,
|
|
138
|
-
res.min,
|
|
139
|
-
res.max,
|
|
140
|
-
res.q1,
|
|
141
|
-
res.q3,
|
|
142
|
-
res.sd,
|
|
143
|
-
]
|
|
144
|
-
.map(FLOAT)
|
|
145
|
-
.join(",")}`,
|
|
146
|
-
total: EMPTY,
|
|
147
|
-
suffix: EMPTY,
|
|
148
|
-
};
|
|
149
|
-
|
|
150
|
-
const $n = (n, char = "-") => new Array(n).fill(char).join("");
|
|
151
|
-
const pad = (w) => {
|
|
152
|
-
const column = $n(w, " ");
|
|
153
|
-
return (x) => {
|
|
154
|
-
const s = typeof x === "number" ? FLOAT(x) : x;
|
|
155
|
-
return s.length < w
|
|
156
|
-
? column.substr(0, w - s.length) + s
|
|
157
|
-
: s.substr(0, w);
|
|
158
|
-
};
|
|
159
|
-
};
|
|
160
|
-
const c24 = pad(24);
|
|
161
|
-
const c12 = pad(12);
|
|
162
|
-
const c8 = pad(8);
|
|
163
|
-
const d24 = $n(24);
|
|
164
|
-
const d12 = $n(11) + ":";
|
|
165
|
-
const d8 = $n(7) + ":";
|
|
166
|
-
const COLUMNS = [c24, c8, c8, c12, c8, c8, c8, c8, c8, c8, c8];
|
|
167
|
-
const DASHES = [d24, d8, d8, d12, d8, d8, d8, d8, d8, d8, d8];
|
|
168
|
-
const row = (cols) => `|${cols.map((x, i) => COLUMNS[i](x)).join("|")}|`;
|
|
169
|
-
const FORMAT_MD = {
|
|
170
|
-
prefix: () => row([
|
|
171
|
-
"Title",
|
|
172
|
-
"Iter",
|
|
173
|
-
"Size",
|
|
174
|
-
"Total",
|
|
175
|
-
"Mean",
|
|
176
|
-
"Median",
|
|
177
|
-
"Min",
|
|
178
|
-
"Max",
|
|
179
|
-
"Q1",
|
|
180
|
-
"Q3",
|
|
181
|
-
"SD%",
|
|
182
|
-
]) + `\n|${DASHES.join("|")}|`,
|
|
183
|
-
start: EMPTY,
|
|
184
|
-
warmup: EMPTY,
|
|
185
|
-
result: (res) => row([
|
|
186
|
-
res.title,
|
|
187
|
-
"" + res.iter,
|
|
188
|
-
"" + res.size,
|
|
189
|
-
res.total,
|
|
190
|
-
res.mean,
|
|
191
|
-
res.median,
|
|
192
|
-
res.min,
|
|
193
|
-
res.max,
|
|
194
|
-
res.q1,
|
|
195
|
-
res.q3,
|
|
196
|
-
res.sd,
|
|
197
|
-
]),
|
|
198
|
-
total: EMPTY,
|
|
199
|
-
suffix: EMPTY,
|
|
200
|
-
};
|
|
201
|
-
|
|
202
|
-
exports.DEFAULT_OPTS = DEFAULT_OPTS;
|
|
203
|
-
exports.EMPTY = EMPTY;
|
|
204
|
-
exports.FLOAT = FLOAT;
|
|
205
|
-
exports.FORMAT_CSV = FORMAT_CSV;
|
|
206
|
-
exports.FORMAT_DEFAULT = FORMAT_DEFAULT;
|
|
207
|
-
exports.FORMAT_MD = FORMAT_MD;
|
|
208
|
-
exports.bench = bench;
|
|
209
|
-
exports.benchResult = benchResult;
|
|
210
|
-
exports.benchmark = benchmark;
|
|
211
|
-
exports.now = now;
|
|
212
|
-
exports.outputString = outputString;
|
|
213
|
-
exports.suite = suite;
|
|
214
|
-
exports.timed = timed;
|
|
215
|
-
exports.timedResult = timedResult;
|
package/lib/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../api.js","../now.js","../timed.js","../bench.js","../format/default.js","../benchmark.js","../suite.js","../format/csv.js","../format/markdown.js"],"sourcesContent":null,"names":[],"mappings":";;;;AAAY,MAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;AAC7B,MAAC,KAAK,GAAG,MAAM;;ACIf,MAAC,GAAG,GAAG,OAAO,MAAM,KAAK,WAAW;AAChD,MAAM,OAAO,OAAO,KAAK,WAAW;AACpC,QAAQ,OAAO,OAAO,CAAC,MAAM,KAAK,WAAW;AAC7C,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU;AACnD,UAAU,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;AACvC,UAAU,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;AACxC,MAAM,MAAM,IAAI,CAAC,GAAG,EAAE,GAAG;;ACFb,MAAC,KAAK,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,EAAE,KAAK;AAC1C,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;AACrC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/C,IAAI,OAAO,GAAG,CAAC;AACf,EAAE;AAOU,MAAC,WAAW,GAAG,CAAC,EAAE,KAAK;AACnC,IAAI,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;AACrB,IAAI,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC;AACrB,IAAI,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;AACrB,IAAI,OAAO;AACX,QAAQ,GAAG;AACX,QAAQ,CAAC,OAAO,MAAM,KAAK,WAAW;AACtC,cAAc,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;AAC7B,cAAc,EAAE,GAAG,EAAE,IAAI,IAAI;AAC7B,KAAK,CAAC;AACN;;ACrBY,MAAC,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK;AACnD,IAAI,IAAI,GAAG,CAAC;AACZ,IAAI,OAAO,KAAK,CAAC,MAAM;AACvB,QAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AACxB,YAAY,GAAG,GAAG,EAAE,EAAE,CAAC;AACvB,SAAS;AACT,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK,EAAE,MAAM,CAAC,CAAC;AACf,EAAE;AAQU,MAAC,WAAW,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK;AAC5C,IAAI,IAAI,GAAG,CAAC;AACZ,IAAI,OAAO,WAAW,CAAC,MAAM;AAC7B,QAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AACxB,YAAY,GAAG,GAAG,EAAE,EAAE,CAAC;AACvB,SAAS;AACT,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK,CAAC,CAAC;AACP;;AChCY,MAAC,cAAc,GAAG;AAC9B,IAAI,MAAM,EAAE,KAAK;AACjB,IAAI,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;AAClD,IAAI,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;AAC3E,IAAI,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAEtE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;AACzD,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AAC1F,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;AACtC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpB,IAAI,KAAK,EAAE,CAAC,GAAG,KAAK;AACpB,QAAQ,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,QAAQ,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAK;AACL,IAAI,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC;AACvB;;ACdY,MAAC,YAAY,GAAG;AAC5B,IAAI,KAAK,EAAE,WAAW;AACtB,IAAI,IAAI,EAAE,GAAG;AACb,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,MAAM,EAAE,cAAc;AAC1B,EAAE;AACU,MAAC,SAAS,GAAG,CAAC,EAAE,EAAE,IAAI,KAAK;AACvC,IAAI,MAAM,KAAK,GAAG,EAAE,GAAG,YAAY,EAAE,GAAG,IAAI,EAAE,CAAC;AAC/C,IAAI,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;AACzD,IAAI,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAChD,IAAI,MAAM,CAAC,GAAG,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,IAAI,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AACpD,IAAI,MAAM,OAAO,GAAG,EAAE,CAAC;AACvB,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG;AAClC,QAAQ,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACzD,IAAI,MAAM,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;AAC9B,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;AACtC,IAAI,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3B,IAAI,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;AAClC,IAAI,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;AAC/C,IAAI,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;AAC/C,IAAI,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AACtF,QAAQ,IAAI;AACZ,QAAQ,GAAG,CAAC;AACZ,IAAI,MAAM,GAAG,GAAG;AAChB,QAAQ,KAAK,EAAE,KAAK,CAAC,KAAK;AAC1B,QAAQ,IAAI;AACZ,QAAQ,IAAI;AACZ,QAAQ,KAAK;AACb,QAAQ,IAAI;AACZ,QAAQ,MAAM;AACd,QAAQ,GAAG;AACX,QAAQ,GAAG;AACX,QAAQ,EAAE;AACV,QAAQ,EAAE;AACV,QAAQ,EAAE;AACV,KAAK,CAAC;AACN,IAAI,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/C,IAAI,OAAO,GAAG,CAAC;AACf,EAAE;AAQU,MAAC,YAAY,GAAG,CAAC,GAAG,KAAK,GAAG,KAAK,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG;;ACrDtD,MAAC,KAAK,GAAG,CAAC,KAAK,EAAE,IAAI,KAAK;AACtC,IAAI,MAAM,KAAK,GAAG;AAClB,QAAQ,GAAG,YAAY;AACvB,QAAQ,GAAG,IAAI;AACf,KAAK,CAAC;AACN,IAAI,KAAK,CAAC,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AACxD,IAAI,MAAM,OAAO,GAAG,EAAE,CAAC;AACvB,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,EAAE;AACzB,QAAQ,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/E,KAAK;AACL,IAAI,KAAK,CAAC,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9D,IAAI,KAAK,CAAC,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AACxD,IAAI,OAAO,OAAO,CAAC;AACnB;;ACbY,MAAC,UAAU,GAAG;AAC1B,IAAI,MAAM,EAAE,MAAM,CAAC,yDAAyD,CAAC;AAC7E,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,MAAM,EAAE,KAAK;AACjB,IAAI,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE;AAC/D,QAAQ,GAAG,CAAC,KAAK;AACjB,QAAQ,GAAG,CAAC,IAAI;AAChB,QAAQ,GAAG,CAAC,MAAM;AAClB,QAAQ,GAAG,CAAC,GAAG;AACf,QAAQ,GAAG,CAAC,GAAG;AACf,QAAQ,GAAG,CAAC,EAAE;AACd,QAAQ,GAAG,CAAC,EAAE;AACd,QAAQ,GAAG,CAAC,EAAE;AACd,KAAK;AACL,SAAS,GAAG,CAAC,KAAK,CAAC;AACnB,SAAS,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACpB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,MAAM,EAAE,KAAK;AACjB;;AClBA,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,GAAG,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC/D,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK;AACnB,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,OAAO,CAAC,CAAC,KAAK;AAClB,QAAQ,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACvD,QAAQ,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC;AAC3B,cAAc,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;AAChD,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7B,KAAK,CAAC;AACN,CAAC,CAAC;AACF,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AACpB,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AACpB,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAClB,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AACnB,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AACzB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACvB,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC/D,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC9D,MAAM,GAAG,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,MAAC,SAAS,GAAG;AACzB,IAAI,MAAM,EAAE,MAAM,GAAG,CAAC;AACtB,QAAQ,OAAO;AACf,QAAQ,MAAM;AACd,QAAQ,MAAM;AACd,QAAQ,OAAO;AACf,QAAQ,MAAM;AACd,QAAQ,QAAQ;AAChB,QAAQ,KAAK;AACb,QAAQ,KAAK;AACb,QAAQ,IAAI;AACZ,QAAQ,IAAI;AACZ,QAAQ,KAAK;AACb,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAClC,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,MAAM,EAAE,KAAK;AACjB,IAAI,MAAM,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC;AACzB,QAAQ,GAAG,CAAC,KAAK;AACjB,QAAQ,EAAE,GAAG,GAAG,CAAC,IAAI;AACrB,QAAQ,EAAE,GAAG,GAAG,CAAC,IAAI;AACrB,QAAQ,GAAG,CAAC,KAAK;AACjB,QAAQ,GAAG,CAAC,IAAI;AAChB,QAAQ,GAAG,CAAC,MAAM;AAClB,QAAQ,GAAG,CAAC,GAAG;AACf,QAAQ,GAAG,CAAC,GAAG;AACf,QAAQ,GAAG,CAAC,EAAE;AACd,QAAQ,GAAG,CAAC,EAAE;AACd,QAAQ,GAAG,CAAC,EAAE;AACd,KAAK,CAAC;AACN,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,MAAM,EAAE,KAAK;AACjB;;;;;;;;;;;;;;;;;"}
|
package/lib/index.umd.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(((t="undefined"!=typeof globalThis?globalThis:t||self).thi=t.thi||{},t.thi.ng=t.thi.ng||{},t.thi.ng.bench={}))}(this,(function(t){"use strict";const e=t=>t.toFixed(2),n=()=>"",i="undefined"!=typeof BigInt?"undefined"!=typeof process&&void 0!==process.hrtime&&"function"==typeof process.hrtime.bigint?()=>process.hrtime.bigint():()=>BigInt(1e6*Date.now()):()=>1e6*Date.now(),r=(t,e="")=>{const[n,i]=o(t);return console.log(`${e} ${i.toFixed(2)}ms`),n},o=t=>{const e=i(),n=t(),r=i();return[n,1e-6*("undefined"!=typeof BigInt?Number(r-e):r-e)]},s=(t,e=1e6)=>{let n;return o((()=>{for(;e-- >0;)n=t();return n}))},a={prefix:n,start:({title:t})=>`benchmarking: ${t}`,warmup:(t,{warmup:n})=>`\twarmup... ${e(t)}ms (${n} runs)`,result:({iter:t,size:n,total:i,mean:r,median:o,min:s,max:a,q1:u,q3:m,sd:l})=>`\ttotal: ${e(i)}ms, runs: ${t} (@ ${n} calls/iter)\n\tmean: ${e(r)}ms, median: ${e(o)}ms, range: [${e(s)}..${e(a)}]\n\tq1: ${e(u)}ms, q3: ${e(m)}ms\n\tsd: ${e(l)}%`,total:t=>`Fastest: "${t.slice().sort(((t,e)=>t.mean-e.mean))[0].title}"`,suffix:()=>"---"},u={title:"benchmark",iter:1e3,size:1,warmup:10,output:!0,format:a},m=(t,e)=>{const n={...u,...e},{iter:i,size:r,warmup:o,output:a,format:m}=n;a&&l(m.start(n));const f=s(t,o*r)[1];a&&l(m.warmup(f,n));const p=[];for(let e=i;--e>=0;)p.push(s(t,r)[1]);p.sort(((t,e)=>t-e));const c=p.reduce(((t,e)=>t+e),0),d=c/i,h=p[i>>1],$=p[0],x=p[i-1],g=p[Math.ceil(.25*i)],M=p[Math.ceil(.75*i)],b=Math.sqrt(p.reduce(((t,e)=>t+(d-e)**2),0)/i)/d*100,T={title:n.title,iter:i,size:r,total:c,mean:d,median:h,min:$,max:x,q1:g,q3:M,sd:b};return a&&l(m.result(T)),T},l=t=>""!==t&&console.log(t),f={prefix:()=>"Title,Iterations,Size,Total,Mean,Median,Min,Max,Q1,Q3,SD%",start:n,warmup:n,result:t=>`"${t.title}",${t.iter},${t.size},${[t.total,t.mean,t.median,t.min,t.max,t.q1,t.q3,t.sd].map(e).join(",")}`,total:n,suffix:n},p=(t,e="-")=>new Array(t).fill(e).join(""),c=t=>{const n=p(t," ");return i=>{const r="number"==typeof i?e(i):i;return r.length<t?n.substr(0,t-r.length)+r:r.substr(0,t)}},d=c(24),h=c(12),$=c(8),x=p(24),g=p(11)+":",M=p(7)+":",b=[d,$,$,h,$,$,$,$,$,$,$],T=[x,M,M,g,M,M,M,M,M,M,M],w=t=>`|${t.map(((t,e)=>b[e](t))).join("|")}|`,q={prefix:()=>w(["Title","Iter","Size","Total","Mean","Median","Min","Max","Q1","Q3","SD%"])+`\n|${T.join("|")}|`,start:n,warmup:n,result:t=>w([t.title,""+t.iter,""+t.size,t.total,t.mean,t.median,t.min,t.max,t.q1,t.q3,t.sd]),total:n,suffix:n};t.DEFAULT_OPTS=u,t.EMPTY=n,t.FLOAT=e,t.FORMAT_CSV=f,t.FORMAT_DEFAULT=a,t.FORMAT_MD=q,t.bench=(t,e=1e6,n="")=>{let i;return r((()=>{for(;e-- >0;)i=t();return i}),n)},t.benchResult=s,t.benchmark=m,t.now=i,t.outputString=l,t.suite=(t,e)=>{const n={...u,...e};n.output&&l(n.format.prefix());const i=[];for(let e of t)i.push(m(e.fn,{...n,...e.opts,title:e.title}));return n.output&&l(n.format.total(i)),n.output&&l(n.format.suffix()),i},t.timed=r,t.timedResult=o,Object.defineProperty(t,"__esModule",{value:!0})}));
|
package/lib/index.umd.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.umd.js","sources":["../api.js","../now.js","../timed.js","../bench.js","../format/default.js","../benchmark.js","../suite.js","../format/csv.js","../format/markdown.js"],"sourcesContent":null,"names":[],"mappings":"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"}
|