extra-benchmark 0.2.1 → 0.2.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/lib/benchmark.js CHANGED
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Benchmark = void 0;
4
4
  const prelude_1 = require("@blackglory/prelude");
5
+ const perf_hooks_1 = require("perf_hooks");
5
6
  class Benchmark {
6
7
  constructor(name, options = {}) {
7
8
  this.name = name;
@@ -77,9 +78,9 @@ async function sample({ iterate, beforeEach, times }) {
77
78
  for (let i = times; i--;) {
78
79
  await beforeEach();
79
80
  const startRSS = process.memoryUsage().rss;
80
- const startTime = performance.now();
81
+ const startTime = perf_hooks_1.performance.now();
81
82
  const afterEach = await iterate();
82
- const endTime = performance.now();
83
+ const endTime = perf_hooks_1.performance.now();
83
84
  const endRSS = process.memoryUsage().rss;
84
85
  if ((0, prelude_1.isFunction)(afterEach)) {
85
86
  await afterEach();
@@ -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":";;;AAAA,iDAAiE;AACjE,2CAAwC;AAgDxC,MAAa,SAAS;IAKpB,YAA4B,IAAY,EAAE,UAA6B,EAAE;QAA7C,SAAI,GAAJ,IAAI,CAAQ;QAJhC,mBAAc,GAAqB,EAAE,CAAA;QAK3C,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,GAAG,CAAA;QACjC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,GAAG,CAAA;IACjC,CAAC;IAED,OAAO,CACL,IAAY,EACZ,EASC,EACD,UAA6B,EAAE;QAE/B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;IACjD,CAAC;IAED,KAAK,CAAC,CAAE,GAAG;QACT,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,cAAc,EAAE;YAC/C,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,aAAa,CAAA;YAC3C,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAA;YACzB,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAA;YAC5D,MAAM,UAAU,GAAG,IAAA,oBAAU,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,cAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,IAAI,cAAI,CAAC,CAAA;YAC1E,MAAM,QAAQ,GAAG,IAAA,oBAAU,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,cAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,cAAI,CAAC,CAAA;YACtE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAA;YACzC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAA;YAGtC,MAAM,MAAM,CAAC;gBACX,OAAO;gBACP,UAAU;gBACV,KAAK,EAAE,KAAK;aACb,CAAC,CAAA;YAGF,MAAM,OAAO,GAAc,MAAM,MAAM,CAAC;gBACtC,OAAO;gBACP,UAAU;gBACV,KAAK,EAAE,IAAI;aACZ,CAAC,CAAA;YAEF,MAAM,QAAQ,EAAE,CAAA;YAEhB,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAA;YACpD,MAAM,iBAAiB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;gBACzD,OAAO,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;YAC9B,CAAC,CAAC,CAAA;YACF,MAAM,kBAAkB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;gBAC1D,OAAO,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;YAC9B,CAAC,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;gBACxD,OAAO,GAAG,GAAG,GAAG,CAAA;YAClB,CAAC,CAAC,CAAA;YACF,MAAM,kBAAkB,GAAG,gBAAgB,GAAG,IAAI,CAAA;YAElD,MAAM,wBAAwB,GAAG,IAAI,GAAG,gBAAgB,CAAA;YACxD,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAA;YAE5D,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAA;YAC5D,MAAM,uBAAuB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;gBAClE,OAAO,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;YAC9B,CAAC,CAAC,CAAA;YACF,MAAM,uBAAuB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;gBAClE,OAAO,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;YAC9B,CAAC,CAAC,CAAA;YACF,MAAM,uBAAuB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE;gBACtE,OAAO,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;YAC5B,CAAC,CAAC,CAAA;YAEF,MAAM;gBACJ,IAAI;gBACJ,KAAK;gBACL,IAAI;gBACJ,mBAAmB;gBACnB,wBAAwB;gBACxB,iBAAiB;gBACjB,kBAAkB;gBAClB,kBAAkB;gBAClB,uBAAuB;gBACvB,uBAAuB;gBACvB,uBAAuB;aACxB,CAAA;SACF;IACH,CAAC;CACF;AA9FD,8BA8FC;AAED,KAAK,UAAU,MAAM,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAKjD;IAEC,MAAM,OAAO,GAAc,EAAE,CAAA;IAE7B,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,GAAG;QACxB,MAAM,UAAU,EAAE,CAAA;QAElB,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,CAAA;QAC1C,MAAM,SAAS,GAAG,wBAAW,CAAC,GAAG,EAAE,CAAA;QAEnC,MAAM,SAAS,GAAG,MAAM,OAAO,EAAE,CAAA;QAEjC,MAAM,OAAO,GAAG,wBAAW,CAAC,GAAG,EAAE,CAAA;QACjC,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,CAAA;QAExC,IAAI,IAAA,oBAAU,EAAC,SAAS,CAAC,EAAE;YACzB,MAAM,SAAS,EAAE,CAAA;SAClB;QAED,MAAM,WAAW,GAAG,OAAO,GAAG,SAAS,CAAA;QACvC,MAAM,gBAAgB,GAAG,MAAM,GAAG,QAAQ,CAAA;QAE1C,OAAO,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC,CAAA;KAChD;IAED,OAAO,OAAO,CAAA;AAChB,CAAC"}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "extra-benchmark",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "description": "Lightweight benchmarking library.",
5
5
  "keywords": [],
6
6
  "files": [
7
7
  "lib",
8
- "dist"
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-p build:*",
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",
@@ -0,0 +1,177 @@
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 averageMemoryIncrements = memoryIncrments.reduce((average, cur) => {
126
+ return (average + cur) / 2
127
+ })
128
+
129
+ yield {
130
+ name
131
+ , warms
132
+ , runs
133
+ , operationsPerSecond
134
+ , operationsPerMillisecond
135
+ , maxiumElapsedTime
136
+ , minimumElapsedTime
137
+ , averageElapsedTime
138
+ , maximumMemoryIncrements
139
+ , averageMemoryIncrements
140
+ , minimumMemoryIncrements
141
+ }
142
+ }
143
+ }
144
+ }
145
+
146
+ async function sample({ iterate, beforeEach, times }: {
147
+ // iterate(): afterEach
148
+ iterate: () => Awaitable<void | (() => Awaitable<void>)>
149
+ , beforeEach: () => Awaitable<void>
150
+ , times: number
151
+ }
152
+ ): Promise<ISample[]> {
153
+ const samples: ISample[] = []
154
+
155
+ for (let i = times; i--;) {
156
+ await beforeEach()
157
+
158
+ const startRSS = process.memoryUsage().rss
159
+ const startTime = performance.now()
160
+
161
+ const afterEach = await iterate()
162
+
163
+ const endTime = performance.now()
164
+ const endRSS = process.memoryUsage().rss
165
+
166
+ if (isFunction(afterEach)) {
167
+ await afterEach()
168
+ }
169
+
170
+ const elapsedTime = endTime - startTime
171
+ const memoryIncrements = endRSS - startRSS
172
+
173
+ samples.push({ elapsedTime, memoryIncrements })
174
+ }
175
+
176
+ return samples
177
+ }
package/src/index.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './benchmark'