extra-benchmark 0.2.2 → 0.2.4
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/lib/benchmark.js +2 -3
- package/lib/benchmark.js.map +1 -1
- package/package.json +3 -5
- package/src/benchmark.ts +176 -0
- package/src/index.ts +1 -0
- package/CHANGELOG.md +0 -38
package/lib/benchmark.js
CHANGED
|
@@ -53,9 +53,8 @@ class Benchmark {
|
|
|
53
53
|
const minimumMemoryIncrements = memoryIncrments.reduce((min, cur) => {
|
|
54
54
|
return cur > min ? min : cur;
|
|
55
55
|
});
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
});
|
|
56
|
+
const totalMemoryIncrements = memoryIncrments.reduce((average, cur) => average + cur);
|
|
57
|
+
const averageMemoryIncrements = totalMemoryIncrements / memoryIncrments.length;
|
|
59
58
|
yield {
|
|
60
59
|
name,
|
|
61
60
|
warms,
|
package/lib/benchmark.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"benchmark.js","sourceRoot":"","sources":["../src/benchmark.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"benchmark.js","sourceRoot":"","sources":["../src/benchmark.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "extra-benchmark",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.4",
|
|
4
4
|
"description": "Lightweight benchmarking library.",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"files": [
|
|
7
7
|
"lib",
|
|
8
|
-
"
|
|
8
|
+
"src"
|
|
9
9
|
],
|
|
10
10
|
"main": "lib/index.js",
|
|
11
11
|
"types": "lib/index.d.ts",
|
|
@@ -20,10 +20,9 @@
|
|
|
20
20
|
"test:coverage": "jest --coverage --config jest.config.js",
|
|
21
21
|
"prepublishOnly": "run-s clean build",
|
|
22
22
|
"clean": "rimraf lib",
|
|
23
|
-
"build": "run-
|
|
23
|
+
"build": "run-s build:*",
|
|
24
24
|
"build:compile": "tsc --project tsconfig.build.json --module commonjs",
|
|
25
25
|
"build:patch": "tscpaths -p tsconfig.build.json -s ./src -o ./lib",
|
|
26
|
-
"bench": "./benches/benchmark.sh",
|
|
27
26
|
"release": "standard-version"
|
|
28
27
|
},
|
|
29
28
|
"husky": {
|
|
@@ -33,7 +32,6 @@
|
|
|
33
32
|
}
|
|
34
33
|
},
|
|
35
34
|
"devDependencies": {
|
|
36
|
-
"@blackglory/jest-matchers": "^0.5.0",
|
|
37
35
|
"@commitlint/cli": "^17.3.0",
|
|
38
36
|
"@commitlint/config-conventional": "^17.3.0",
|
|
39
37
|
"@types/jest": "^29.2.3",
|
package/src/benchmark.ts
ADDED
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { pass, Awaitable, isFunction } from '@blackglory/prelude'
|
|
2
|
+
import { performance } from 'perf_hooks'
|
|
3
|
+
|
|
4
|
+
export interface IBenchmarkOptions {
|
|
5
|
+
/* The number of times to warm up the benchmark test */
|
|
6
|
+
warms?: number
|
|
7
|
+
|
|
8
|
+
/* The number of times to run the benchmark test */
|
|
9
|
+
runs?: number
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface IBenchmarkCaseResult {
|
|
13
|
+
name: string
|
|
14
|
+
warms: number
|
|
15
|
+
runs: number
|
|
16
|
+
|
|
17
|
+
operationsPerSecond: number
|
|
18
|
+
operationsPerMillisecond: number
|
|
19
|
+
|
|
20
|
+
/* Milliseconds */
|
|
21
|
+
maxiumElapsedTime: number
|
|
22
|
+
minimumElapsedTime: number
|
|
23
|
+
averageElapsedTime: number
|
|
24
|
+
|
|
25
|
+
/* Bytes */
|
|
26
|
+
maximumMemoryIncrements: number
|
|
27
|
+
minimumMemoryIncrements: number
|
|
28
|
+
averageMemoryIncrements: number
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
interface IBenchmarkCase {
|
|
32
|
+
name: string
|
|
33
|
+
fn: () => Awaitable<
|
|
34
|
+
| (() => Awaitable<void | (() => void)>) // iterate
|
|
35
|
+
| {
|
|
36
|
+
iterate: () => Awaitable<void | (() => void)>
|
|
37
|
+
beforeEach?: () => Awaitable<void>
|
|
38
|
+
afterAll?: () => Awaitable<void>
|
|
39
|
+
}
|
|
40
|
+
>
|
|
41
|
+
options: IBenchmarkOptions
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
interface ISample {
|
|
45
|
+
// Milliseconds
|
|
46
|
+
elapsedTime: number
|
|
47
|
+
memoryIncrements: number
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export class Benchmark {
|
|
51
|
+
private benchmarkCases: IBenchmarkCase[] = []
|
|
52
|
+
private warms: number
|
|
53
|
+
private runs: number
|
|
54
|
+
|
|
55
|
+
constructor(public readonly name: string, options: IBenchmarkOptions = {}) {
|
|
56
|
+
this.warms = options.warms ?? 100
|
|
57
|
+
this.runs = options.runs ?? 100
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
addCase(
|
|
61
|
+
name: string
|
|
62
|
+
, fn: () => Awaitable<
|
|
63
|
+
// iterate(): afterEach
|
|
64
|
+
| (() => Awaitable<void | (() => Awaitable<void>)>)
|
|
65
|
+
| {
|
|
66
|
+
// iterate(): afterEach
|
|
67
|
+
iterate: () => Awaitable<void | (() => void)>
|
|
68
|
+
beforeEach?: () => Awaitable<void>
|
|
69
|
+
afterAll?: () => Awaitable<void>
|
|
70
|
+
}
|
|
71
|
+
>
|
|
72
|
+
, options: IBenchmarkOptions = {}
|
|
73
|
+
): void {
|
|
74
|
+
this.benchmarkCases.push({ name, fn, options })
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
async * run(): AsyncIterable<IBenchmarkCaseResult> {
|
|
78
|
+
for (const benchmarkCase of this.benchmarkCases) {
|
|
79
|
+
const { fn, name, options } = benchmarkCase
|
|
80
|
+
const result = await fn()
|
|
81
|
+
const iterate = isFunction(result) ? result : result.iterate
|
|
82
|
+
const beforeEach = isFunction(result) ? pass : (result.beforeEach ?? pass)
|
|
83
|
+
const afterAll = isFunction(result) ? pass : (result.afterAll ?? pass)
|
|
84
|
+
const warms = options.warms ?? this.warms
|
|
85
|
+
const runs = options.runs ?? this.runs
|
|
86
|
+
|
|
87
|
+
// warm-up
|
|
88
|
+
await sample({
|
|
89
|
+
iterate
|
|
90
|
+
, beforeEach
|
|
91
|
+
, times: warms
|
|
92
|
+
})
|
|
93
|
+
|
|
94
|
+
// run
|
|
95
|
+
const samples: ISample[] = await sample({
|
|
96
|
+
iterate
|
|
97
|
+
, beforeEach
|
|
98
|
+
, times: runs
|
|
99
|
+
})
|
|
100
|
+
|
|
101
|
+
await afterAll()
|
|
102
|
+
|
|
103
|
+
const elapsedTimes = samples.map(x => x.elapsedTime)
|
|
104
|
+
const maxiumElapsedTime = elapsedTimes.reduce((max, cur) => {
|
|
105
|
+
return cur > max ? cur : max
|
|
106
|
+
})
|
|
107
|
+
const minimumElapsedTime = elapsedTimes.reduce((min, cur) => {
|
|
108
|
+
return cur > min ? min : cur
|
|
109
|
+
})
|
|
110
|
+
const totalElapsedTime = elapsedTimes.reduce((acc, cur) => {
|
|
111
|
+
return acc + cur
|
|
112
|
+
})
|
|
113
|
+
const averageElapsedTime = totalElapsedTime / runs
|
|
114
|
+
|
|
115
|
+
const operationsPerMillisecond = runs / totalElapsedTime
|
|
116
|
+
const operationsPerSecond = runs / (totalElapsedTime / 1000)
|
|
117
|
+
|
|
118
|
+
const memoryIncrments = samples.map(x => x.memoryIncrements)
|
|
119
|
+
const maximumMemoryIncrements = memoryIncrments.reduce((max, cur) => {
|
|
120
|
+
return cur > max ? cur : max
|
|
121
|
+
})
|
|
122
|
+
const minimumMemoryIncrements = memoryIncrments.reduce((min, cur) => {
|
|
123
|
+
return cur > min ? min : cur
|
|
124
|
+
})
|
|
125
|
+
const totalMemoryIncrements = memoryIncrments.reduce((average, cur) => average + cur)
|
|
126
|
+
const averageMemoryIncrements = totalMemoryIncrements / memoryIncrments.length
|
|
127
|
+
|
|
128
|
+
yield {
|
|
129
|
+
name
|
|
130
|
+
, warms
|
|
131
|
+
, runs
|
|
132
|
+
, operationsPerSecond
|
|
133
|
+
, operationsPerMillisecond
|
|
134
|
+
, maxiumElapsedTime
|
|
135
|
+
, minimumElapsedTime
|
|
136
|
+
, averageElapsedTime
|
|
137
|
+
, maximumMemoryIncrements
|
|
138
|
+
, averageMemoryIncrements
|
|
139
|
+
, minimumMemoryIncrements
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
async function sample({ iterate, beforeEach, times }: {
|
|
146
|
+
// iterate(): afterEach
|
|
147
|
+
iterate: () => Awaitable<void | (() => Awaitable<void>)>
|
|
148
|
+
, beforeEach: () => Awaitable<void>
|
|
149
|
+
, times: number
|
|
150
|
+
}
|
|
151
|
+
): Promise<ISample[]> {
|
|
152
|
+
const samples: ISample[] = []
|
|
153
|
+
|
|
154
|
+
for (let i = times; i--;) {
|
|
155
|
+
await beforeEach()
|
|
156
|
+
|
|
157
|
+
const startRSS = process.memoryUsage().rss
|
|
158
|
+
const startTime = performance.now()
|
|
159
|
+
|
|
160
|
+
const afterEach = await iterate()
|
|
161
|
+
|
|
162
|
+
const endTime = performance.now()
|
|
163
|
+
const endRSS = process.memoryUsage().rss
|
|
164
|
+
|
|
165
|
+
if (isFunction(afterEach)) {
|
|
166
|
+
await afterEach()
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
const elapsedTime = endTime - startTime
|
|
170
|
+
const memoryIncrements = endRSS - startRSS
|
|
171
|
+
|
|
172
|
+
samples.push({ elapsedTime, memoryIncrements })
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
return samples
|
|
176
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './benchmark'
|
package/CHANGELOG.md
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
|
-
|
|
5
|
-
### [0.2.2](https://github.com/BlackGlory/extra-benchmark/compare/v0.2.1...v0.2.2) (2022-11-28)
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
### Bug Fixes
|
|
9
|
-
|
|
10
|
-
* performance for Node.js v14 ([cc65ecf](https://github.com/BlackGlory/extra-benchmark/commit/cc65ecf7047439f4b1c3ddd8d3a64ff33a69c0b9))
|
|
11
|
-
|
|
12
|
-
### [0.2.1](https://github.com/BlackGlory/extra-benchmark/compare/v0.2.0...v0.2.1) (2022-11-27)
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
### Bug Fixes
|
|
16
|
-
|
|
17
|
-
* the behavior related to `afterAll` ([8fd13aa](https://github.com/BlackGlory/extra-benchmark/commit/8fd13aa6d60e6fe5f176ae06d31e1198eef99a3f))
|
|
18
|
-
|
|
19
|
-
## [0.2.0](https://github.com/BlackGlory/extra-benchmark/compare/v0.1.1...v0.2.0) (2022-11-27)
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
### ⚠ BREAKING CHANGES
|
|
23
|
-
|
|
24
|
-
* - Remove `operationsPerNanosecond` of `IBenchmarkCaseResult`
|
|
25
|
-
- `maximumElapsedTime`, `minimumElapsedTime`, `averageElapsedTime` uints changed to milliseconds
|
|
26
|
-
* Renamed `warmUps` to `warms`
|
|
27
|
-
|
|
28
|
-
* remove BigInt values ([93195cc](https://github.com/BlackGlory/extra-benchmark/commit/93195cc4cbd9177c175238a65a118a8488be640d))
|
|
29
|
-
* rename `warmUps` to `warms` ([4b64747](https://github.com/BlackGlory/extra-benchmark/commit/4b64747a3ae229f18810b136feb6ac019d6ac411))
|
|
30
|
-
|
|
31
|
-
### [0.1.1](https://github.com/BlackGlory/extra-benchmark/compare/v0.1.0...v0.1.1) (2022-09-10)
|
|
32
|
-
|
|
33
|
-
## 0.1.0 (2022-09-09)
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
### Features
|
|
37
|
-
|
|
38
|
-
* init ([6877521](https://github.com/BlackGlory/extra-benchmark/commit/6877521f1af35288a76e49de589d3d10d8a32942))
|