@nestia/benchmark 12.0.0-rc.4 → 12.1.0
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.
|
@@ -97,7 +97,17 @@ var DynamicBenchmarker;
|
|
|
97
97
|
*/
|
|
98
98
|
DynamicBenchmarker.master = (props) => __awaiter(this, void 0, void 0, function* () {
|
|
99
99
|
var _a;
|
|
100
|
+
if (!Number.isSafeInteger(props.count) || props.count < 0)
|
|
101
|
+
throw new Error("DynamicBenchmarker.master(): count must be a non-negative integer.");
|
|
102
|
+
if (!Number.isSafeInteger(props.threads) || props.threads <= 0)
|
|
103
|
+
throw new Error("DynamicBenchmarker.master(): threads must be a positive integer.");
|
|
104
|
+
if (!Number.isSafeInteger(props.simultaneous) || props.simultaneous <= 0)
|
|
105
|
+
throw new Error("DynamicBenchmarker.master(): simultaneous must be a positive integer.");
|
|
100
106
|
const completes = new Array(props.threads).fill(0);
|
|
107
|
+
const counts = new Array(props.threads)
|
|
108
|
+
.fill(0)
|
|
109
|
+
.map((_, index) => Math.floor(props.count / props.threads) +
|
|
110
|
+
(index < props.count % props.threads ? 1 : 0));
|
|
101
111
|
const servants = yield Promise.all(new Array(props.threads).fill(null).map((_, i) => __awaiter(this, void 0, void 0, function* () {
|
|
102
112
|
var _a;
|
|
103
113
|
const connector = new tgrid_1.WorkerConnector(null, {
|
|
@@ -125,8 +135,8 @@ var DynamicBenchmarker;
|
|
|
125
135
|
});
|
|
126
136
|
}
|
|
127
137
|
}))().catch(() => { });
|
|
128
|
-
const events = (yield Promise.all(servants.map((connector) => connector.getDriver().execute({
|
|
129
|
-
count:
|
|
138
|
+
const events = (yield Promise.all(servants.map((connector, index) => connector.getDriver().execute({
|
|
139
|
+
count: counts[index],
|
|
130
140
|
simultaneous: Math.ceil(props.simultaneous / props.threads),
|
|
131
141
|
})))).flat();
|
|
132
142
|
completed_at = new Date();
|
|
@@ -185,11 +195,13 @@ var DynamicBenchmarker;
|
|
|
185
195
|
props: ctx.props,
|
|
186
196
|
})(ctx.props.location);
|
|
187
197
|
const entireEvents = [];
|
|
198
|
+
let scheduled = 0;
|
|
188
199
|
yield Promise.all(new Array(mass.simultaneous)
|
|
189
200
|
.fill(null)
|
|
190
201
|
.map(() => 1)
|
|
191
202
|
.map(() => __awaiter(this, void 0, void 0, function* () {
|
|
192
|
-
while (
|
|
203
|
+
while (scheduled < mass.count) {
|
|
204
|
+
++scheduled;
|
|
193
205
|
const localEvents = [];
|
|
194
206
|
const func = functions[Math.floor(Math.random() * functions.length)];
|
|
195
207
|
const connection = Object.assign(Object.assign({}, ctx.props.connection), { logger: (fe) => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -211,7 +223,7 @@ var DynamicBenchmarker;
|
|
|
211
223
|
}
|
|
212
224
|
catch (exp) {
|
|
213
225
|
for (const e of localEvents)
|
|
214
|
-
e.success =
|
|
226
|
+
e.success = false;
|
|
215
227
|
}
|
|
216
228
|
if (localEvents.length !== 0)
|
|
217
229
|
ctx.driver.progress(entireEvents.length).catch(() => { });
|
|
@@ -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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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nestia/benchmark",
|
|
3
|
-
"version": "12.
|
|
3
|
+
"version": "12.1.0",
|
|
4
4
|
"description": "NestJS Performance Benchmark Program",
|
|
5
|
-
"types": "lib/index.d.ts",
|
|
6
5
|
"main": "lib/index.js",
|
|
7
6
|
"exports": {
|
|
8
7
|
".": {
|
|
@@ -31,7 +30,7 @@
|
|
|
31
30
|
"dependencies": {
|
|
32
31
|
"tgrid": "^1.2.1",
|
|
33
32
|
"tstl": "^3.0.0",
|
|
34
|
-
"@nestia/fetcher": "^12.
|
|
33
|
+
"@nestia/fetcher": "^12.1.0"
|
|
35
34
|
},
|
|
36
35
|
"devDependencies": {
|
|
37
36
|
"@types/node": "^25.3.3",
|
|
@@ -50,5 +49,6 @@
|
|
|
50
49
|
"scripts": {
|
|
51
50
|
"build": "rimraf lib && ttsc",
|
|
52
51
|
"dev": "rimraf lib && ttsc --watch"
|
|
53
|
-
}
|
|
52
|
+
},
|
|
53
|
+
"types": "lib/index.d.ts"
|
|
54
54
|
}
|
|
@@ -202,7 +202,22 @@ export namespace DynamicBenchmarker {
|
|
|
202
202
|
* @returns Benchmark report
|
|
203
203
|
*/
|
|
204
204
|
export const master = async (props: IMasterProps): Promise<IReport> => {
|
|
205
|
+
if (!Number.isSafeInteger(props.count) || props.count < 0)
|
|
206
|
+
throw new Error("DynamicBenchmarker.master(): count must be a non-negative integer.");
|
|
207
|
+
if (!Number.isSafeInteger(props.threads) || props.threads <= 0)
|
|
208
|
+
throw new Error("DynamicBenchmarker.master(): threads must be a positive integer.");
|
|
209
|
+
if (!Number.isSafeInteger(props.simultaneous) || props.simultaneous <= 0)
|
|
210
|
+
throw new Error(
|
|
211
|
+
"DynamicBenchmarker.master(): simultaneous must be a positive integer.",
|
|
212
|
+
);
|
|
205
213
|
const completes: number[] = new Array(props.threads).fill(0);
|
|
214
|
+
const counts: number[] = new Array(props.threads)
|
|
215
|
+
.fill(0)
|
|
216
|
+
.map(
|
|
217
|
+
(_, index) =>
|
|
218
|
+
Math.floor(props.count / props.threads) +
|
|
219
|
+
(index < props.count % props.threads ? 1 : 0),
|
|
220
|
+
);
|
|
206
221
|
const servants: WorkerConnector<
|
|
207
222
|
null,
|
|
208
223
|
IBenchmarkMaster,
|
|
@@ -247,9 +262,9 @@ export namespace DynamicBenchmarker {
|
|
|
247
262
|
|
|
248
263
|
const events: IBenchmarkEvent[] = (
|
|
249
264
|
await Promise.all(
|
|
250
|
-
servants.map((connector) =>
|
|
265
|
+
servants.map((connector, index) =>
|
|
251
266
|
connector.getDriver().execute({
|
|
252
|
-
count:
|
|
267
|
+
count: counts[index]!,
|
|
253
268
|
simultaneous: Math.ceil(props.simultaneous / props.threads),
|
|
254
269
|
}),
|
|
255
270
|
),
|
|
@@ -338,12 +353,14 @@ export namespace DynamicBenchmarker {
|
|
|
338
353
|
})(ctx.props.location);
|
|
339
354
|
|
|
340
355
|
const entireEvents: IBenchmarkEvent[] = [];
|
|
356
|
+
let scheduled: number = 0;
|
|
341
357
|
await Promise.all(
|
|
342
358
|
new Array(mass.simultaneous)
|
|
343
359
|
.fill(null)
|
|
344
360
|
.map(() => 1)
|
|
345
361
|
.map(async () => {
|
|
346
|
-
while (
|
|
362
|
+
while (scheduled < mass.count) {
|
|
363
|
+
++scheduled;
|
|
347
364
|
const localEvents: IBenchmarkEvent[] = [];
|
|
348
365
|
const func: IFunction<Parameters> =
|
|
349
366
|
functions[Math.floor(Math.random() * functions.length)]!;
|
|
@@ -365,8 +382,7 @@ export namespace DynamicBenchmarker {
|
|
|
365
382
|
try {
|
|
366
383
|
await func.value(...ctx.props.parameters(connection, func.key));
|
|
367
384
|
} catch (exp) {
|
|
368
|
-
for (const e of localEvents)
|
|
369
|
-
e.success = e.status === 200 || e.status === 201;
|
|
385
|
+
for (const e of localEvents) e.success = false;
|
|
370
386
|
}
|
|
371
387
|
if (localEvents.length !== 0)
|
|
372
388
|
ctx.driver.progress(entireEvents.length).catch(() => {});
|