@nestia/benchmark 14.0.0 → 14.0.1
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/README.md +1 -1
- package/lib/DynamicBenchmarker.d.ts +3 -2
- package/lib/DynamicBenchmarker.js +10 -4
- package/lib/DynamicBenchmarker.js.map +1 -1
- package/lib/internal/DynamicBenchmarkReporter.js +18 -12
- package/lib/internal/DynamicBenchmarkReporter.js.map +1 -1
- package/package.json +2 -2
- package/src/DynamicBenchmarker.ts +20 -10
- package/src/internal/DynamicBenchmarkReporter.ts +16 -12
package/README.md
CHANGED
|
@@ -60,7 +60,7 @@ Check out the document in the [website](https://nestia.io/docs/):
|
|
|
60
60
|
### 🏠 Home
|
|
61
61
|
- [Introduction](https://nestia.io/docs/)
|
|
62
62
|
- [Setup](https://nestia.io/docs/setup/)
|
|
63
|
-
- [Pure TypeScript](https://nestia.io/docs/
|
|
63
|
+
- [Pure TypeScript](https://nestia.io/docs/core/TypedBody/)
|
|
64
64
|
|
|
65
65
|
### 📖 Features
|
|
66
66
|
- Core Library
|
|
@@ -50,8 +50,9 @@ export declare namespace DynamicBenchmarker {
|
|
|
50
50
|
*
|
|
51
51
|
* The number of requests to be executed simultaneously.
|
|
52
52
|
*
|
|
53
|
-
* This property value
|
|
54
|
-
*
|
|
53
|
+
* This property value is distributed among the {@link threads} servants like
|
|
54
|
+
* the {@link count}, so their budgets sum to it. It must not be less than
|
|
55
|
+
* the {@link threads}, as each servant runs at least one request at a time.
|
|
55
56
|
*/
|
|
56
57
|
simultaneous: number;
|
|
57
58
|
/**
|
|
@@ -103,11 +103,17 @@ var DynamicBenchmarker;
|
|
|
103
103
|
throw new Error("DynamicBenchmarker.master(): threads must be a positive integer.");
|
|
104
104
|
if (!Number.isSafeInteger(props.simultaneous) || props.simultaneous <= 0)
|
|
105
105
|
throw new Error("DynamicBenchmarker.master(): simultaneous must be a positive integer.");
|
|
106
|
+
if (props.simultaneous < props.threads)
|
|
107
|
+
throw new Error(`DynamicBenchmarker.master(): simultaneous (${props.simultaneous}) must not be less than threads (${props.threads}), as each servant runs at least one request at a time.`);
|
|
106
108
|
const completes = new Array(props.threads).fill(0);
|
|
107
|
-
|
|
109
|
+
// the first `total % threads` servants take one more than the rest, so the
|
|
110
|
+
// shares sum to the total
|
|
111
|
+
const distribute = (total) => new Array(props.threads)
|
|
108
112
|
.fill(0)
|
|
109
|
-
.map((_, index) => Math.floor(
|
|
110
|
-
(index <
|
|
113
|
+
.map((_, index) => Math.floor(total / props.threads) +
|
|
114
|
+
(index < total % props.threads ? 1 : 0));
|
|
115
|
+
const counts = distribute(props.count);
|
|
116
|
+
const budgets = distribute(props.simultaneous);
|
|
111
117
|
const servants = yield Promise.all(new Array(props.threads).fill(null).map((_, i) => __awaiter(this, void 0, void 0, function* () {
|
|
112
118
|
var _a;
|
|
113
119
|
const connector = new tgrid_1.WorkerConnector(null, {
|
|
@@ -137,7 +143,7 @@ var DynamicBenchmarker;
|
|
|
137
143
|
}))().catch(() => { });
|
|
138
144
|
const events = (yield Promise.all(servants.map((connector, index) => connector.getDriver().execute({
|
|
139
145
|
count: counts[index],
|
|
140
|
-
simultaneous:
|
|
146
|
+
simultaneous: budgets[index],
|
|
141
147
|
})))).flat();
|
|
142
148
|
completed_at = new Date();
|
|
143
149
|
yield Promise.all(servants.map((connector) => connector.close()));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicBenchmarker.js","sourceRoot":"","sources":["../src/DynamicBenchmarker.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,4CAAoB;AACpB,iCAA8D;AAC9D,+BAAgD;AAGhD,kFAA+E;AAI/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,IAAiB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"DynamicBenchmarker.js","sourceRoot":"","sources":["../src/DynamicBenchmarker.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,13 @@ const os_1 = __importDefault(require("os"));
|
|
|
8
8
|
var DynamicBenchmarkReporter;
|
|
9
9
|
(function (DynamicBenchmarkReporter) {
|
|
10
10
|
DynamicBenchmarkReporter.markdown = (report) => {
|
|
11
|
-
|
|
11
|
+
var _a;
|
|
12
|
+
var _b;
|
|
13
|
+
// one fixed locale, so a report reads the same on every machine
|
|
14
|
+
const integer = (value) => value.toLocaleString("en-US");
|
|
15
|
+
const format = (value) => value === null
|
|
16
|
+
? "N/A"
|
|
17
|
+
: (Math.floor(value * 100) / 100).toLocaleString("en-US");
|
|
12
18
|
const head = () => [
|
|
13
19
|
"Type",
|
|
14
20
|
"Count",
|
|
@@ -22,8 +28,8 @@ var DynamicBenchmarkReporter;
|
|
|
22
28
|
new Array(7).fill("----").join("|");
|
|
23
29
|
const row = (title, s) => [
|
|
24
30
|
title,
|
|
25
|
-
s.count
|
|
26
|
-
s.success
|
|
31
|
+
integer(s.count),
|
|
32
|
+
integer(s.success),
|
|
27
33
|
format(s.mean),
|
|
28
34
|
format(s.stdev),
|
|
29
35
|
format(s.minimum),
|
|
@@ -35,18 +41,18 @@ var DynamicBenchmarkReporter;
|
|
|
35
41
|
"> Generated by [`@nestia/benchmark`](https://github.com/samchon/nestia)",
|
|
36
42
|
``,
|
|
37
43
|
` - Specifications`,
|
|
38
|
-
|
|
39
|
-
` -
|
|
44
|
+
// os.cpus() is empty where the platform exposes no CPU information
|
|
45
|
+
` - CPU: ${(_b = (_a = os_1.default.cpus()[0]) === null || _a === void 0 ? void 0 : _a.model) !== null && _b !== void 0 ? _b : "unknown"}`,
|
|
46
|
+
` - RAM: ${integer(Math.floor(os_1.default.totalmem() / 1024 / 1024 / 1024))} GB`,
|
|
40
47
|
` - NodeJS Version: ${process.version}`,
|
|
41
|
-
` - Backend Server: 1 core / 1 thread`,
|
|
42
48
|
` - Arguments`,
|
|
43
|
-
` - Count: ${report.count
|
|
44
|
-
` - Threads: ${report.threads
|
|
45
|
-
` - Simultaneous: ${report.simultaneous
|
|
49
|
+
` - Count: ${integer(report.count)}`,
|
|
50
|
+
` - Threads: ${integer(report.threads)}`,
|
|
51
|
+
` - Simultaneous: ${integer(report.simultaneous)}`,
|
|
46
52
|
` - Time`,
|
|
47
53
|
` - Start: ${report.started_at}`,
|
|
48
54
|
` - Complete: ${report.completed_at}`,
|
|
49
|
-
` - Elapsed: ${(new Date(report.completed_at).getTime() - new Date(report.started_at).getTime())
|
|
55
|
+
` - Elapsed: ${integer(new Date(report.completed_at).getTime() - new Date(report.started_at).getTime())} ms`,
|
|
50
56
|
``,
|
|
51
57
|
head(),
|
|
52
58
|
row("Total", report.statistics),
|
|
@@ -88,8 +94,8 @@ var DynamicBenchmarkReporter;
|
|
|
88
94
|
.map((e) => [
|
|
89
95
|
e.method,
|
|
90
96
|
e.path,
|
|
91
|
-
e.count
|
|
92
|
-
(e.count - e.success)
|
|
97
|
+
integer(e.count),
|
|
98
|
+
integer(e.count - e.success),
|
|
93
99
|
].join(" | ")),
|
|
94
100
|
].join("\n");
|
|
95
101
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicBenchmarkReporter.js","sourceRoot":"","sources":["../../src/internal/DynamicBenchmarkReporter.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AAIpB,IAAiB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"DynamicBenchmarkReporter.js","sourceRoot":"","sources":["../../src/internal/DynamicBenchmarkReporter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nestia/benchmark",
|
|
3
|
-
"version": "14.0.
|
|
3
|
+
"version": "14.0.1",
|
|
4
4
|
"description": "NestJS Performance Benchmark Program",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"exports": {
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"tgrid": "^1.2.1",
|
|
32
32
|
"tstl": "^3.0.0",
|
|
33
|
-
"@nestia/fetcher": "^14.0.
|
|
33
|
+
"@nestia/fetcher": "^14.0.1"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@types/node": "^25.3.3",
|
|
@@ -58,8 +58,9 @@ export namespace DynamicBenchmarker {
|
|
|
58
58
|
*
|
|
59
59
|
* The number of requests to be executed simultaneously.
|
|
60
60
|
*
|
|
61
|
-
* This property value
|
|
62
|
-
*
|
|
61
|
+
* This property value is distributed among the {@link threads} servants like
|
|
62
|
+
* the {@link count}, so their budgets sum to it. It must not be less than
|
|
63
|
+
* the {@link threads}, as each servant runs at least one request at a time.
|
|
63
64
|
*/
|
|
64
65
|
simultaneous: number;
|
|
65
66
|
|
|
@@ -214,14 +215,23 @@ export namespace DynamicBenchmarker {
|
|
|
214
215
|
throw new Error(
|
|
215
216
|
"DynamicBenchmarker.master(): simultaneous must be a positive integer.",
|
|
216
217
|
);
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
.map(
|
|
221
|
-
(_, index) =>
|
|
222
|
-
Math.floor(props.count / props.threads) +
|
|
223
|
-
(index < props.count % props.threads ? 1 : 0),
|
|
218
|
+
if (props.simultaneous < props.threads)
|
|
219
|
+
throw new Error(
|
|
220
|
+
`DynamicBenchmarker.master(): simultaneous (${props.simultaneous}) must not be less than threads (${props.threads}), as each servant runs at least one request at a time.`,
|
|
224
221
|
);
|
|
222
|
+
const completes: number[] = new Array(props.threads).fill(0);
|
|
223
|
+
// the first `total % threads` servants take one more than the rest, so the
|
|
224
|
+
// shares sum to the total
|
|
225
|
+
const distribute = (total: number): number[] =>
|
|
226
|
+
new Array(props.threads)
|
|
227
|
+
.fill(0)
|
|
228
|
+
.map(
|
|
229
|
+
(_, index) =>
|
|
230
|
+
Math.floor(total / props.threads) +
|
|
231
|
+
(index < total % props.threads ? 1 : 0),
|
|
232
|
+
);
|
|
233
|
+
const counts: number[] = distribute(props.count);
|
|
234
|
+
const budgets: number[] = distribute(props.simultaneous);
|
|
225
235
|
const servants: WorkerConnector<
|
|
226
236
|
null,
|
|
227
237
|
IBenchmarkMaster,
|
|
@@ -269,7 +279,7 @@ export namespace DynamicBenchmarker {
|
|
|
269
279
|
servants.map((connector, index) =>
|
|
270
280
|
connector.getDriver().execute({
|
|
271
281
|
count: counts[index]!,
|
|
272
|
-
simultaneous:
|
|
282
|
+
simultaneous: budgets[index]!,
|
|
273
283
|
}),
|
|
274
284
|
),
|
|
275
285
|
)
|
|
@@ -4,8 +4,12 @@ import { DynamicBenchmarker } from "../DynamicBenchmarker";
|
|
|
4
4
|
|
|
5
5
|
export namespace DynamicBenchmarkReporter {
|
|
6
6
|
export const markdown = (report: DynamicBenchmarker.IReport): string => {
|
|
7
|
+
// one fixed locale, so a report reads the same on every machine
|
|
8
|
+
const integer = (value: number): string => value.toLocaleString("en-US");
|
|
7
9
|
const format = (value: number | null) =>
|
|
8
|
-
value === null
|
|
10
|
+
value === null
|
|
11
|
+
? "N/A"
|
|
12
|
+
: (Math.floor(value * 100) / 100).toLocaleString("en-US");
|
|
9
13
|
const head = () =>
|
|
10
14
|
[
|
|
11
15
|
"Type",
|
|
@@ -21,8 +25,8 @@ export namespace DynamicBenchmarkReporter {
|
|
|
21
25
|
const row = (title: string, s: DynamicBenchmarker.IReport.IStatistics) =>
|
|
22
26
|
[
|
|
23
27
|
title,
|
|
24
|
-
s.count
|
|
25
|
-
s.success
|
|
28
|
+
integer(s.count),
|
|
29
|
+
integer(s.success),
|
|
26
30
|
format(s.mean),
|
|
27
31
|
format(s.stdev),
|
|
28
32
|
format(s.minimum),
|
|
@@ -39,18 +43,18 @@ export namespace DynamicBenchmarkReporter {
|
|
|
39
43
|
"> Generated by [`@nestia/benchmark`](https://github.com/samchon/nestia)",
|
|
40
44
|
``,
|
|
41
45
|
` - Specifications`,
|
|
42
|
-
|
|
43
|
-
` -
|
|
46
|
+
// os.cpus() is empty where the platform exposes no CPU information
|
|
47
|
+
` - CPU: ${os.cpus()[0]?.model ?? "unknown"}`,
|
|
48
|
+
` - RAM: ${integer(Math.floor(os.totalmem() / 1024 / 1024 / 1024))} GB`,
|
|
44
49
|
` - NodeJS Version: ${process.version}`,
|
|
45
|
-
` - Backend Server: 1 core / 1 thread`,
|
|
46
50
|
` - Arguments`,
|
|
47
|
-
` - Count: ${report.count
|
|
48
|
-
` - Threads: ${report.threads
|
|
49
|
-
` - Simultaneous: ${report.simultaneous
|
|
51
|
+
` - Count: ${integer(report.count)}`,
|
|
52
|
+
` - Threads: ${integer(report.threads)}`,
|
|
53
|
+
` - Simultaneous: ${integer(report.simultaneous)}`,
|
|
50
54
|
` - Time`,
|
|
51
55
|
` - Start: ${report.started_at}`,
|
|
52
56
|
` - Complete: ${report.completed_at}`,
|
|
53
|
-
` - Elapsed: ${(new Date(report.completed_at).getTime() - new Date(report.started_at).getTime())
|
|
57
|
+
` - Elapsed: ${integer(new Date(report.completed_at).getTime() - new Date(report.started_at).getTime())} ms`,
|
|
54
58
|
``,
|
|
55
59
|
head(),
|
|
56
60
|
row("Total", report.statistics),
|
|
@@ -95,8 +99,8 @@ export namespace DynamicBenchmarkReporter {
|
|
|
95
99
|
[
|
|
96
100
|
e.method,
|
|
97
101
|
e.path,
|
|
98
|
-
e.count
|
|
99
|
-
(e.count - e.success)
|
|
102
|
+
integer(e.count),
|
|
103
|
+
integer(e.count - e.success),
|
|
100
104
|
].join(" | "),
|
|
101
105
|
),
|
|
102
106
|
].join("\n");
|