@nestia/benchmark 0.1.2 → 0.2.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.
@@ -77,6 +77,16 @@ export declare namespace DynamicBenchmarker {
77
77
  * @param complete The number of completed requests.
78
78
  */
79
79
  progress?: (complete: number) => void;
80
+ /**
81
+ * Get memory usage.
82
+ *
83
+ * Get the memory usage of the master program.
84
+ *
85
+ * Specify this property only when your backend server is running on
86
+ * a different process, so that need to measure the memory usage of
87
+ * the backend server from other process.
88
+ */
89
+ memory?: () => Promise<NodeJS.MemoryUsage>;
80
90
  /**
81
91
  * Standard I/O option.
82
92
  *
@@ -130,6 +140,7 @@ export declare namespace DynamicBenchmarker {
130
140
  completed_at: string;
131
141
  statistics: IReport.IStatistics;
132
142
  endpoints: Array<IReport.IEndpoint & IReport.IStatistics>;
143
+ memories: IReport.IMemory[];
133
144
  }
134
145
  namespace IReport {
135
146
  interface IEndpoint {
@@ -144,6 +155,10 @@ export declare namespace DynamicBenchmarker {
144
155
  minimum: number | null;
145
156
  maximum: number | null;
146
157
  }
158
+ interface IMemory {
159
+ time: string;
160
+ usage: NodeJS.MemoryUsage;
161
+ }
147
162
  }
148
163
  /**
149
164
  * Master program.
@@ -111,9 +111,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
111
111
  Object.defineProperty(exports, "__esModule", { value: true });
112
112
  exports.DynamicBenchmarker = void 0;
113
113
  var fs_1 = __importDefault(require("fs"));
114
- var os_1 = __importDefault(require("os"));
115
114
  var tgrid_1 = require("tgrid");
116
115
  var tstl_1 = require("tstl");
116
+ var DynamicBenchmarkReporter_1 = require("./internal/DynamicBenchmarkReporter");
117
117
  /**
118
118
  * Dynamic benchmark executor running prefixed functions.
119
119
  *
@@ -158,7 +158,7 @@ var DynamicBenchmarker;
158
158
  * @returns Benchmark report
159
159
  */
160
160
  DynamicBenchmarker.master = function (props) { return __awaiter(_this, void 0, void 0, function () {
161
- var completes, servants, started_at, events, completed_at, endpoints, events_1, events_1_1, e;
161
+ var completes, servants, started_at, memories, completed_at, events, endpoints, events_1, events_1_1, e;
162
162
  var e_1, _a;
163
163
  var _this = this;
164
164
  var _b;
@@ -190,6 +190,37 @@ var DynamicBenchmarker;
190
190
  case 1:
191
191
  servants = _c.sent();
192
192
  started_at = new Date();
193
+ memories = [];
194
+ completed_at = null;
195
+ (function () { return __awaiter(_this, void 0, void 0, function () {
196
+ var getter, _a, _b;
197
+ var _c;
198
+ var _this = this;
199
+ var _d;
200
+ return __generator(this, function (_e) {
201
+ switch (_e.label) {
202
+ case 0:
203
+ getter = (_d = props.memory) !== null && _d !== void 0 ? _d : (function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
204
+ return [2 /*return*/, process.memoryUsage()];
205
+ }); }); });
206
+ _e.label = 1;
207
+ case 1:
208
+ if (!(completed_at === null)) return [3 /*break*/, 4];
209
+ return [4 /*yield*/, (0, tstl_1.sleep_for)(1000)];
210
+ case 2:
211
+ _e.sent();
212
+ _b = (_a = memories).push;
213
+ _c = {};
214
+ return [4 /*yield*/, getter()];
215
+ case 3:
216
+ _b.apply(_a, [(_c.usage = _e.sent(),
217
+ _c.time = new Date().toISOString(),
218
+ _c)]);
219
+ return [3 /*break*/, 1];
220
+ case 4: return [2 /*return*/];
221
+ }
222
+ });
223
+ }); })().catch(function () { });
193
224
  return [4 /*yield*/, Promise.all(servants.map(function (connector) {
194
225
  return connector.getDriver().execute({
195
226
  count: Math.ceil(props.count / props.threads),
@@ -231,6 +262,7 @@ var DynamicBenchmarker;
231
262
  endpoints: __spreadArray([], __read(endpoints), false).map(function (it) { return (__assign(__assign({}, statistics(it.second)), it.first)); }),
232
263
  started_at: started_at.toISOString(),
233
264
  completed_at: completed_at.toISOString(),
265
+ memories: memories,
234
266
  }];
235
267
  }
236
268
  });
@@ -268,82 +300,7 @@ var DynamicBenchmarker;
268
300
  * @returns Markdown content
269
301
  */
270
302
  DynamicBenchmarker.markdown = function (report) {
271
- var format = function (value) {
272
- return value === null ? "N/A" : (Math.floor(value * 100) / 100).toLocaleString();
273
- };
274
- var writeHead = function () {
275
- return [
276
- "Type",
277
- "Count",
278
- "Success",
279
- "Mean.",
280
- "Stdev.",
281
- "Minimum",
282
- "Maximum",
283
- ].join(" | ") +
284
- "\n" +
285
- new Array(7).fill("----").join("|");
286
- };
287
- var writeRow = function (title, s) {
288
- return [
289
- title,
290
- s.count.toLocaleString(),
291
- s.success.toLocaleString(),
292
- format(s.mean),
293
- format(s.stdev),
294
- format(s.minimum),
295
- format(s.maximum),
296
- ].join(" | ");
297
- };
298
- return __spreadArray(__spreadArray(__spreadArray([
299
- "# Benchmark Report",
300
- "> Generated by [`@nestia/benchmark`](https://github.com/samchon/nestia)",
301
- "",
302
- " - Specifications",
303
- " - CPU: ".concat(os_1.default.cpus()[0].model),
304
- " - RAM: ".concat(Math.floor(os_1.default.totalmem() / 1024 / 1024 / 1024).toLocaleString(), " GB"),
305
- " - NodeJS Version: ".concat(process.version),
306
- " - Backend Server: 1 core / 1 thread",
307
- " - Arguments",
308
- " - Count: ".concat(report.count.toLocaleString()),
309
- " - Threads: ".concat(report.threads.toLocaleString()),
310
- " - Simultaneous: ".concat(report.simultaneous.toLocaleString()),
311
- " - Time",
312
- " - Start: ".concat(report.started_at),
313
- " - Complete: ".concat(report.completed_at),
314
- " - Elapsed: ".concat((new Date(report.completed_at).getTime() - new Date(report.started_at).getTime()).toLocaleString(), " ms"),
315
- "",
316
- writeHead(),
317
- writeRow("Total", report.statistics),
318
- "",
319
- "> Unit: milliseconds",
320
- "",
321
- "## Endpoints",
322
- writeHead()
323
- ], __read(report.endpoints
324
- .slice()
325
- .sort(function (a, b) { var _a, _b; return ((_a = b.mean) !== null && _a !== void 0 ? _a : 0) - ((_b = a.mean) !== null && _b !== void 0 ? _b : 0); })
326
- .map(function (endpoint) {
327
- return writeRow("".concat(endpoint.method, " ").concat(endpoint.path), endpoint);
328
- })), false), [
329
- "",
330
- "> Unit: milliseconds",
331
- "",
332
- "## Failures",
333
- "Method | Path | Count | Failures",
334
- "-------|------|-------|----------"
335
- ], false), __read(report.endpoints
336
- .filter(function (e) { return e.success !== e.count; })
337
- .slice()
338
- .sort(function (a, b) { return b.count - a.count; })
339
- .map(function (e) {
340
- return [
341
- e.method,
342
- e.path,
343
- e.count.toLocaleString(),
344
- (e.count - e.success).toLocaleString(),
345
- ].join(" | ");
346
- })), false).join("\n");
303
+ return DynamicBenchmarkReporter_1.DynamicBenchmarWriter.markdown(report);
347
304
  };
348
305
  var execute = function (ctx) {
349
306
  return function (mass) { return __awaiter(_this, void 0, void 0, function () {
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicBenchmarker.js","sourceRoot":"","sources":["../src/DynamicBenchmarker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DynamicBenchmarker.js","sourceRoot":"","sources":["../src/DynamicBenchmarker.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,0CAAoB;AACpB,+BAA8D;AAC9D,6BAAgD;AAGhD,gFAA4E;AAI5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,IAAiB,kBAAkB,CAwUlC;AAxUD,WAAiB,kBAAkB;;IA8IjC;;;;;;;;;;OAUG;IACU,yBAAM,GAAG,UAAO,KAAmB;;;;;;;;oBACxC,SAAS,GAAa,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAKvD,qBAAM,OAAO,CAAC,GAAG,CACrB,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,UAAO,CAAC,EAAE,CAAC;;;;;;wCAC3C,SAAS,GAIX,IAAI,uBAAe,CACrB,IAAI,EACJ;4CACE,MAAM,EAAE,MAAA,KAAK,CAAC,MAAM,mCAAI,CAAC,cAAM,OAAA,IAAI,EAAJ,CAAI,CAAC;4CACpC,QAAQ,EAAE,UAAC,OAAO;gDAChB,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;gDACvB,IAAI,KAAK,CAAC,QAAQ;oDAChB,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,GAAG,CAAC,EAAL,CAAK,EAAE,CAAC,CAAC,CAAC,CAAC;4CACzD,CAAC;yCACF,EACD,SAAS,CACV,CAAC;wCACF,qBAAM,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,EAAA;;wCAA9D,SAA8D,CAAC;wCAC/D,sBAAO,SAAS,EAAC;;;6BAClB,CAAC,CACH,EAAA;;oBAzBK,QAAQ,GAIR,SAqBL;oBAEK,UAAU,GAAS,IAAI,IAAI,EAAE,CAAC;oBAC9B,QAAQ,GAAsB,EAAE,CAAC;oBACnC,YAAY,GAAgB,IAAI,CAAC;oBAErC,CAAC;;;;;;;;oCACO,MAAM,GAAG,MAAA,KAAK,CAAC,MAAM,mCAAI,CAAC;wCAAY,sBAAA,OAAO,CAAC,WAAW,EAAE,EAAA;6CAAA,CAAC,CAAC;;;yCAC5D,CAAA,YAAY,KAAK,IAAI,CAAA;oCAC1B,qBAAM,IAAA,gBAAS,EAAC,IAAK,CAAC,EAAA;;oCAAtB,SAAsB,CAAC;oCACvB,KAAA,CAAA,KAAA,QAAQ,CAAA,CAAC,IAAI,CAAA;;oCACJ,qBAAM,MAAM,EAAE,EAAA;;oCADvB,eACE,QAAK,GAAE,SAAc;4CACrB,OAAI,GAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iDAC9B,CAAC;;;;;yBAEN,CAAC,EAAE,CAAC,KAAK,CAAC,cAAO,CAAC,CAAC,CAAC;oBAGnB,qBAAM,OAAO,CAAC,GAAG,CACf,QAAQ,CAAC,GAAG,CAAC,UAAC,SAAS;4BACrB,OAAA,SAAS,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC;gCAC5B,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;gCAC7C,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC;6BAC5D,CAAC;wBAHF,CAGE,CACH,CACF,EAAA;;oBARG,MAAM,GAAsB,CAChC,SAOC,CACF,CAAC,IAAI,EAAE;oBAER,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC;oBAC1B,qBAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAC,SAAS,IAAK,OAAA,SAAS,CAAC,KAAK,EAAE,EAAjB,CAAiB,CAAC,CAAC,EAAA;;oBAAjE,SAAiE,CAAC;oBAClE,IAAI,KAAK,CAAC,QAAQ;wBAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAE1C,SAAS,GACb,IAAI,cAAO,CACT,UAAC,GAAG,IAAK,OAAA,IAAA,WAAI,EAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAA1B,CAA0B,EACnC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAA1C,CAA0C,CACrD,CAAC;;wBACJ,KAAgB,WAAA,SAAA,MAAM,CAAA;4BAAX,CAAC;4BACV,SAAS;iCACN,IAAI,CACH;gCACE,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM;gCACzB,IAAI,EAAE,MAAA,CAAC,CAAC,QAAQ,CAAC,QAAQ,mCAAI,CAAC,CAAC,QAAQ,CAAC,IAAI;6BAC7C,EACD,cAAM,OAAA,EAAE,EAAF,CAAE,CACT;iCACA,IAAI,CAAC,CAAC,CAAC,CAAC;yBAAA;;;;;;;;;oBACb,sBAAO;4BACL,KAAK,EAAE,KAAK,CAAC,KAAK;4BAClB,OAAO,EAAE,KAAK,CAAC,OAAO;4BACtB,YAAY,EAAE,KAAK,CAAC,YAAY;4BAChC,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC;4BAC9B,SAAS,EAAE,yBAAI,SAAS,UAAE,GAAG,CAAC,UAAC,EAAE,IAAK,OAAA,uBACjC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,GACrB,EAAE,CAAC,KAAK,EACX,EAHoC,CAGpC,CAAC;4BACH,UAAU,EAAE,UAAU,CAAC,WAAW,EAAE;4BACpC,YAAY,EAAE,YAAY,CAAC,WAAW,EAAE;4BACxC,QAAQ,UAAA;yBACT,EAAC;;;SACH,CAAC;IAEF;;;;;;;OAOG;IACU,0BAAO,GAAG,UACrB,KAAgC;;;;;oBAE1B,MAAM,GACV,IAAI,oBAAY,EAAE,CAAC;oBACrB,qBAAM,MAAM,CAAC,IAAI,CAAC;4BAChB,OAAO,EAAE,OAAO,CAAC;gCACf,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE;gCAC1B,KAAK,OAAA;6BACN,CAAC;yBACH,CAAC,EAAA;;oBALF,SAKE,CAAC;oBACH,sBAAO,MAAM,EAAC;;;SACf,CAAC;IAEF;;;;;OAKG;IACU,2BAAQ,GAAG,UAAC,MAAkC;QACzD,OAAA,gDAAqB,CAAC,QAAQ,CAAC,MAAM,CAAC;IAAtC,CAAsC,CAAC;IAEzC,IAAM,OAAO,GACX,UAA2B,GAG1B;QACD,OAAA,UAAO,IAGN;;;;;;wBACO,SAAS,GAA4B,EAAE,CAAC;wBAC9C,qBAAM,OAAO,CAAC;gCACZ,UAAU,EAAE,SAAS;gCACrB,MAAM,EAAE,GAAG,CAAC,MAAM;gCAClB,KAAK,EAAE,GAAG,CAAC,KAAK;6BACjB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAA;;wBAJtB,SAIsB,CAAC;wBAEjB,YAAY,GAAsB,EAAE,CAAC;wBAC3C,qBAAM,OAAO,CAAC,GAAG,CACf,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;iCACzB,IAAI,CAAC,IAAI,CAAC;iCACV,GAAG,CAAC,cAAM,OAAA,CAAC,EAAD,CAAC,CAAC;iCACZ,GAAG,CAAC;;;;;;;;;;;;4DAEK,WAAW,GAAsB,EAAE,CAAC;4DACpC,IAAI,GACR,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;4DACpD,UAAU,yBACX,GAAG,CAAC,KAAK,CAAC,UAAU,KACvB,MAAM,EAAE,UAAO,EAAE;;;;wEACT,EAAE,GAAoB;4EAC1B,QAAQ,EAAE,EAAE,CAAC,KAAK;4EAClB,MAAM,EAAE,EAAE,CAAC,MAAM;4EACjB,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE;4EACvC,SAAS,EAAE,MAAA,MAAA,EAAE,CAAC,UAAU,0CAAE,WAAW,EAAE,mCAAI,IAAI;4EAC/C,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE;4EAC3C,OAAO,EAAE,IAAI;yEACd,CAAC;wEACF,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wEACrB,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;;;qEACvB,GACF,CAAC;;;;4DAEA,qBAAM,IAAI,CAAC,KAAK,OAAV,IAAI,2BAAU,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,YAAC;;4DAA/D,SAA+D,CAAC;;;;;gEAEhE,KAAgB,+BAAA,SAAA,WAAW,CAAA,CAAA;oEAAhB,CAAC;oEACV,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC;iEAAA;;;;;;;;;;;4DAErD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;gEAC1B,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,cAAO,CAAC,CAAC,CAAC;;;;;;;iDA1BtD,CAAA,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAA;;;;;;;;iCA4BxC,CAAC,CACL,EAAA;;wBAlCD,SAkCC,CAAC;wBACF,qBAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,EAAA;;wBAA9C,SAA8C,CAAC;wBAC/C,sBAAO,YAAY,EAAC;;;aACrB;IAjDD,CAiDC,CAAC;AACN,CAAC,EAxUgB,kBAAkB,kCAAlB,kBAAkB,QAwUlC;AAOD,IAAM,OAAO,GACX,UAA2B,GAI1B;IACD,OAAA,UAAO,IAAY;;;;;wBACW,qBAAM,YAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAA;;oBAArD,SAAS,GAAa,SAA+B;;;;oBACxC,cAAA,SAAA,SAAS,CAAA;;;;oBAAjB,IAAI;oBACP,aAAmB,UAAG,IAAI,cAAI,IAAI,CAAE,CAAC;oBACpB,qBAAM,YAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAQ,CAAC,EAAA;;oBAAjD,IAAI,GAAa,SAAgC;yBACnD,CAAA,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAA,EAA3B,wBAA2B;oBAAE,qBAAM,OAAO,CAAC,GAAG,CAAC,CAAC,UAAQ,CAAC,EAAA;;oBAA5B,SAA4B,CAAC;;;yBACrD,CAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,IAAI,CAAA,EAA7B,yBAA6B;oBACrB,+CAAa,UAAQ,4DAAC;;oBAA/B,MAAM,GAAG,SAAsB;;;;oBACV,oBAAA,SAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA,CAAA;;;;oBAAtC,KAAA,mBAAY,EAAX,GAAG,QAAA,EAAE,KAAK,QAAA;yBAChB,CAAA,OAAO,KAAK,KAAK,UAAU,CAAA,EAA3B,yBAA2B;oBAAE,yBAAS;;yBACjC,CAAA,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,CAAA,EAA1C,yBAA0C;oBAAE,yBAAS;yBACpD,qBAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAA;;oBAAjC,IAAI,CAAC,SAA4B,CAAC,KAAK,KAAK;wBAAE,yBAAS;;;oBAC5D,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;wBAClB,GAAG,KAAA;wBACH,KAAK,EAAE,KAA8C;qBACtD,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAIV;AAnBD,CAmBC,CAAC;AAEJ,IAAM,UAAU,GAAG,UACjB,MAAyB;IAEzB,IAAM,SAAS,GAAsB,MAAM,CAAC,MAAM,CAAC,UAAC,KAAK,IAAK,OAAA,KAAK,CAAC,OAAO,EAAb,CAAa,CAAC,CAAC;IAC7E,kBACE,KAAK,EAAE,MAAM,CAAC,MAAM,EACpB,OAAO,EAAE,SAAS,CAAC,MAAM,IACtB,OAAO,CAAC,MAAM,CAAC,EAClB;AACJ,CAAC,CAAC;AAEF,IAAM,OAAO,GAAG,UACd,MAAyB;;IAKzB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QACrB,OAAO;YACL,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,IAAI;YACX,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,IAAI,IAAI,GAAW,CAAC,CAAC;IACrB,IAAI,KAAK,GAAW,CAAC,CAAC;IACtB,IAAI,OAAO,GAAW,MAAM,CAAC,gBAAgB,CAAC;IAC9C,IAAI,OAAO,GAAW,MAAM,CAAC,gBAAgB,CAAC;;QAC9C,KAAoB,IAAA,WAAA,SAAA,MAAM,CAAA,8BAAA,kDAAE,CAAC;YAAxB,IAAM,OAAK,mBAAA;YACd,IAAM,OAAO,GACX,IAAI,IAAI,CAAC,OAAK,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;gBACtC,IAAI,IAAI,CAAC,OAAK,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC;YACvC,IAAI,IAAI,OAAO,CAAC;YAChB,KAAK,IAAI,OAAO,GAAG,OAAO,CAAC;YAC3B,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACrC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACvC,CAAC;;;;;;;;;IACD,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC;IACtB,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;IACvD,OAAO,EAAE,IAAI,MAAA,EAAE,KAAK,OAAA,EAAE,OAAO,SAAA,EAAE,OAAO,SAAA,EAAE,CAAC;AAC3C,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { DynamicBenchmarker } from "../DynamicBenchmarker";
2
+ export declare namespace DynamicBenchmarWriter {
3
+ const markdown: (report: DynamicBenchmarker.IReport) => string;
4
+ }
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ var __read = (this && this.__read) || function (o, n) {
3
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
4
+ if (!m) return o;
5
+ var i = m.call(o), r, ar = [], e;
6
+ try {
7
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
+ }
9
+ catch (error) { e = { error: error }; }
10
+ finally {
11
+ try {
12
+ if (r && !r.done && (m = i["return"])) m.call(i);
13
+ }
14
+ finally { if (e) throw e.error; }
15
+ }
16
+ return ar;
17
+ };
18
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
19
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
20
+ if (ar || !(i in from)) {
21
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
22
+ ar[i] = from[i];
23
+ }
24
+ }
25
+ return to.concat(ar || Array.prototype.slice.call(from));
26
+ };
27
+ var __importDefault = (this && this.__importDefault) || function (mod) {
28
+ return (mod && mod.__esModule) ? mod : { "default": mod };
29
+ };
30
+ Object.defineProperty(exports, "__esModule", { value: true });
31
+ exports.DynamicBenchmarWriter = void 0;
32
+ var os_1 = __importDefault(require("os"));
33
+ var DynamicBenchmarWriter;
34
+ (function (DynamicBenchmarWriter) {
35
+ DynamicBenchmarWriter.markdown = function (report) {
36
+ var format = function (value) {
37
+ return value === null ? "N/A" : (Math.floor(value * 100) / 100).toLocaleString();
38
+ };
39
+ var writeHead = function () {
40
+ return [
41
+ "Type",
42
+ "Count",
43
+ "Success",
44
+ "Mean.",
45
+ "Stdev.",
46
+ "Minimum",
47
+ "Maximum",
48
+ ].join(" | ") +
49
+ "\n" +
50
+ new Array(7).fill("----").join("|");
51
+ };
52
+ var writeRow = function (title, s) {
53
+ return [
54
+ title,
55
+ s.count.toLocaleString(),
56
+ s.success.toLocaleString(),
57
+ format(s.mean),
58
+ format(s.stdev),
59
+ format(s.minimum),
60
+ format(s.maximum),
61
+ ].join(" | ");
62
+ };
63
+ return __spreadArray(__spreadArray(__spreadArray([
64
+ "# Benchmark Report",
65
+ "> Generated by [`@nestia/benchmark`](https://github.com/samchon/nestia)",
66
+ "",
67
+ " - Specifications",
68
+ " - CPU: ".concat(os_1.default.cpus()[0].model),
69
+ " - RAM: ".concat(Math.floor(os_1.default.totalmem() / 1024 / 1024 / 1024).toLocaleString(), " GB"),
70
+ " - NodeJS Version: ".concat(process.version),
71
+ " - Backend Server: 1 core / 1 thread",
72
+ " - Arguments",
73
+ " - Count: ".concat(report.count.toLocaleString()),
74
+ " - Threads: ".concat(report.threads.toLocaleString()),
75
+ " - Simultaneous: ".concat(report.simultaneous.toLocaleString()),
76
+ " - Time",
77
+ " - Start: ".concat(report.started_at),
78
+ " - Complete: ".concat(report.completed_at),
79
+ " - Elapsed: ".concat((new Date(report.completed_at).getTime() - new Date(report.started_at).getTime()).toLocaleString(), " ms"),
80
+ "",
81
+ writeHead(),
82
+ writeRow("Total", report.statistics),
83
+ "",
84
+ "> Unit: milliseconds",
85
+ "",
86
+ "## Memory Usage",
87
+ "```mermaid",
88
+ "xychart-beta",
89
+ " x-axis \"Time (second)\"",
90
+ " y-axis \"Memory (MB)\"",
91
+ " line [".concat(report.memories.map(function (m) { return Math.floor((m.usage.heapUsed + m.usage.external) / Math.pow(1024, 2)); }).join(", "), "]"),
92
+ "```",
93
+ "",
94
+ "## Endpoints",
95
+ writeHead()
96
+ ], __read(report.endpoints
97
+ .slice()
98
+ .sort(function (a, b) { var _a, _b; return ((_a = b.mean) !== null && _a !== void 0 ? _a : 0) - ((_b = a.mean) !== null && _b !== void 0 ? _b : 0); })
99
+ .map(function (endpoint) {
100
+ return writeRow("".concat(endpoint.method, " ").concat(endpoint.path), endpoint);
101
+ })), false), [
102
+ "",
103
+ "> Unit: milliseconds",
104
+ "",
105
+ "## Failures",
106
+ "Method | Path | Count | Failures",
107
+ "-------|------|-------|----------"
108
+ ], false), __read(report.endpoints
109
+ .filter(function (e) { return e.success !== e.count; })
110
+ .slice()
111
+ .sort(function (a, b) { return b.count - a.count; })
112
+ .map(function (e) {
113
+ return [
114
+ e.method,
115
+ e.path,
116
+ e.count.toLocaleString(),
117
+ (e.count - e.success).toLocaleString(),
118
+ ].join(" | ");
119
+ })), false).join("\n");
120
+ };
121
+ })(DynamicBenchmarWriter || (exports.DynamicBenchmarWriter = DynamicBenchmarWriter = {}));
122
+ //# sourceMappingURL=DynamicBenchmarkReporter.js.map
@@ -0,0 +1 @@
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": "0.1.2",
3
+ "version": "0.2.0",
4
4
  "description": "NestJS Performance Benchmark Program",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
@@ -22,23 +22,23 @@
22
22
  "author": "Jeongho Nam",
23
23
  "license": "MIT",
24
24
  "devDependencies": {
25
- "@nestia/core": "^3.7.0",
25
+ "@nestia/core": "^3.8.1",
26
26
  "@nestia/e2e": "^0.7.0",
27
- "@nestia/sdk": "^3.7.0",
27
+ "@nestia/sdk": "^3.8.1",
28
28
  "@nestjs/common": "^10.3.10",
29
29
  "@nestjs/core": "^10.3.10",
30
30
  "@nestjs/platform-express": "^10.3.10",
31
31
  "@types/uuid": "^10.0.0",
32
- "nestia": "^5.4.0",
32
+ "nestia": "^5.5.0",
33
33
  "ts-node": "^10.9.2",
34
34
  "ts-patch": "^3.2.1",
35
- "typescript": "^5.5.3",
35
+ "typescript": "^5.5.4",
36
36
  "typescript-transform-paths": "^3.4.7",
37
- "typia": "^6.5.0",
37
+ "typia": "^6.5.4",
38
38
  "uuid": "^10.0.0"
39
39
  },
40
40
  "dependencies": {
41
- "@nestia/fetcher": "^3.7.0",
41
+ "@nestia/fetcher": "^3.8.1",
42
42
  "tgrid": "^1.0.2",
43
43
  "tstl": "^3.0.0"
44
44
  },
@@ -1,10 +1,10 @@
1
1
  import { IConnection } from "@nestia/fetcher";
2
2
  import fs from "fs";
3
- import os from "os";
4
3
  import { Driver, WorkerConnector, WorkerServer } from "tgrid";
5
- import { HashMap, hash } from "tstl";
4
+ import { HashMap, hash, sleep_for } from "tstl";
6
5
 
7
6
  import { IBenchmarkEvent } from "./IBenchmarkEvent";
7
+ import { DynamicBenchmarWriter } from "./internal/DynamicBenchmarkReporter";
8
8
  import { IBenchmarkMaster } from "./internal/IBenchmarkMaster";
9
9
  import { IBenchmarkServant } from "./internal/IBenchmarkServant";
10
10
 
@@ -89,6 +89,17 @@ export namespace DynamicBenchmarker {
89
89
  */
90
90
  progress?: (complete: number) => void;
91
91
 
92
+ /**
93
+ * Get memory usage.
94
+ *
95
+ * Get the memory usage of the master program.
96
+ *
97
+ * Specify this property only when your backend server is running on
98
+ * a different process, so that need to measure the memory usage of
99
+ * the backend server from other process.
100
+ */
101
+ memory?: () => Promise<NodeJS.MemoryUsage>;
102
+
92
103
  /**
93
104
  * Standard I/O option.
94
105
  *
@@ -147,6 +158,7 @@ export namespace DynamicBenchmarker {
147
158
  completed_at: string;
148
159
  statistics: IReport.IStatistics;
149
160
  endpoints: Array<IReport.IEndpoint & IReport.IStatistics>;
161
+ memories: IReport.IMemory[];
150
162
  }
151
163
  export namespace IReport {
152
164
  export interface IEndpoint {
@@ -161,6 +173,10 @@ export namespace DynamicBenchmarker {
161
173
  minimum: number | null;
162
174
  maximum: number | null;
163
175
  }
176
+ export interface IMemory {
177
+ time: string;
178
+ usage: NodeJS.MemoryUsage;
179
+ }
164
180
  }
165
181
 
166
182
  /**
@@ -202,7 +218,22 @@ export namespace DynamicBenchmarker {
202
218
  return connector;
203
219
  }),
204
220
  );
221
+
205
222
  const started_at: Date = new Date();
223
+ const memories: IReport.IMemory[] = [];
224
+ let completed_at: Date | null = null;
225
+
226
+ (async () => {
227
+ const getter = props.memory ?? (async () => process.memoryUsage());
228
+ while (completed_at === null) {
229
+ await sleep_for(1_000);
230
+ memories.push({
231
+ usage: await getter(),
232
+ time: new Date().toISOString(),
233
+ });
234
+ }
235
+ })().catch(() => {});
236
+
206
237
  const events: IBenchmarkEvent[] = (
207
238
  await Promise.all(
208
239
  servants.map((connector) =>
@@ -213,7 +244,8 @@ export namespace DynamicBenchmarker {
213
244
  ),
214
245
  )
215
246
  ).flat();
216
- const completed_at: Date = new Date();
247
+
248
+ completed_at = new Date();
217
249
  await Promise.all(servants.map((connector) => connector.close()));
218
250
  if (props.progress) props.progress(props.count);
219
251
 
@@ -243,6 +275,7 @@ export namespace DynamicBenchmarker {
243
275
  })),
244
276
  started_at: started_at.toISOString(),
245
277
  completed_at: completed_at.toISOString(),
278
+ memories,
246
279
  };
247
280
  };
248
281
 
@@ -274,85 +307,8 @@ export namespace DynamicBenchmarker {
274
307
  * @param report Benchmark report
275
308
  * @returns Markdown content
276
309
  */
277
- export const markdown = (report: DynamicBenchmarker.IReport): string => {
278
- const format = (value: number | null) =>
279
- value === null ? "N/A" : (Math.floor(value * 100) / 100).toLocaleString();
280
- const writeHead = () =>
281
- [
282
- "Type",
283
- "Count",
284
- "Success",
285
- "Mean.",
286
- "Stdev.",
287
- "Minimum",
288
- "Maximum",
289
- ].join(" | ") +
290
- "\n" +
291
- new Array(7).fill("----").join("|");
292
- const writeRow = (
293
- title: string,
294
- s: DynamicBenchmarker.IReport.IStatistics,
295
- ) =>
296
- [
297
- title,
298
- s.count.toLocaleString(),
299
- s.success.toLocaleString(),
300
- format(s.mean),
301
- format(s.stdev),
302
- format(s.minimum),
303
- format(s.maximum),
304
- ].join(" | ");
305
- return [
306
- `# Benchmark Report`,
307
- "> Generated by [`@nestia/benchmark`](https://github.com/samchon/nestia)",
308
- ``,
309
- ` - Specifications`,
310
- ` - CPU: ${os.cpus()[0].model}`,
311
- ` - RAM: ${Math.floor(os.totalmem() / 1024 / 1024 / 1024).toLocaleString()} GB`,
312
- ` - NodeJS Version: ${process.version}`,
313
- ` - Backend Server: 1 core / 1 thread`,
314
- ` - Arguments`,
315
- ` - Count: ${report.count.toLocaleString()}`,
316
- ` - Threads: ${report.threads.toLocaleString()}`,
317
- ` - Simultaneous: ${report.simultaneous.toLocaleString()}`,
318
- ` - Time`,
319
- ` - Start: ${report.started_at}`,
320
- ` - Complete: ${report.completed_at}`,
321
- ` - Elapsed: ${(new Date(report.completed_at).getTime() - new Date(report.started_at).getTime()).toLocaleString()} ms`,
322
- ``,
323
- writeHead(),
324
- writeRow("Total", report.statistics),
325
- "",
326
- "> Unit: milliseconds",
327
- "",
328
- "## Endpoints",
329
- writeHead(),
330
- ...report.endpoints
331
- .slice()
332
- .sort((a, b) => (b.mean ?? 0) - (a.mean ?? 0))
333
- .map((endpoint) =>
334
- writeRow(`${endpoint.method} ${endpoint.path}`, endpoint),
335
- ),
336
- "",
337
- "> Unit: milliseconds",
338
- "",
339
- "## Failures",
340
- "Method | Path | Count | Failures",
341
- "-------|------|-------|----------",
342
- ...report.endpoints
343
- .filter((e) => e.success !== e.count)
344
- .slice()
345
- .sort((a, b) => b.count - a.count)
346
- .map((e) =>
347
- [
348
- e.method,
349
- e.path,
350
- e.count.toLocaleString(),
351
- (e.count - e.success).toLocaleString(),
352
- ].join(" | "),
353
- ),
354
- ].join("\n");
355
- };
310
+ export const markdown = (report: DynamicBenchmarker.IReport): string =>
311
+ DynamicBenchmarWriter.markdown(report);
356
312
 
357
313
  const execute =
358
314
  <Parameters extends any[]>(ctx: {
@@ -0,0 +1,93 @@
1
+ import os from "os";
2
+
3
+ import { DynamicBenchmarker } from "../DynamicBenchmarker";
4
+
5
+ export namespace DynamicBenchmarWriter {
6
+ export const markdown = (report: DynamicBenchmarker.IReport): string => {
7
+ const format = (value: number | null) =>
8
+ value === null ? "N/A" : (Math.floor(value * 100) / 100).toLocaleString();
9
+ const writeHead = () =>
10
+ [
11
+ "Type",
12
+ "Count",
13
+ "Success",
14
+ "Mean.",
15
+ "Stdev.",
16
+ "Minimum",
17
+ "Maximum",
18
+ ].join(" | ") +
19
+ "\n" +
20
+ new Array(7).fill("----").join("|");
21
+ const writeRow = (
22
+ title: string,
23
+ s: DynamicBenchmarker.IReport.IStatistics,
24
+ ) =>
25
+ [
26
+ title,
27
+ s.count.toLocaleString(),
28
+ s.success.toLocaleString(),
29
+ format(s.mean),
30
+ format(s.stdev),
31
+ format(s.minimum),
32
+ format(s.maximum),
33
+ ].join(" | ");
34
+ return [
35
+ `# Benchmark Report`,
36
+ "> Generated by [`@nestia/benchmark`](https://github.com/samchon/nestia)",
37
+ ``,
38
+ ` - Specifications`,
39
+ ` - CPU: ${os.cpus()[0].model}`,
40
+ ` - RAM: ${Math.floor(os.totalmem() / 1024 / 1024 / 1024).toLocaleString()} GB`,
41
+ ` - NodeJS Version: ${process.version}`,
42
+ ` - Backend Server: 1 core / 1 thread`,
43
+ ` - Arguments`,
44
+ ` - Count: ${report.count.toLocaleString()}`,
45
+ ` - Threads: ${report.threads.toLocaleString()}`,
46
+ ` - Simultaneous: ${report.simultaneous.toLocaleString()}`,
47
+ ` - Time`,
48
+ ` - Start: ${report.started_at}`,
49
+ ` - Complete: ${report.completed_at}`,
50
+ ` - Elapsed: ${(new Date(report.completed_at).getTime() - new Date(report.started_at).getTime()).toLocaleString()} ms`,
51
+ ``,
52
+ writeHead(),
53
+ writeRow("Total", report.statistics),
54
+ "",
55
+ "> Unit: milliseconds",
56
+ "",
57
+ "## Memory Usage",
58
+ "```mermaid",
59
+ "xychart-beta",
60
+ ` x-axis "Time (second)"`,
61
+ ` y-axis "Memory (MB)"`,
62
+ ` line [${report.memories.map((m) => Math.floor((m.usage.heapUsed + m.usage.external) / 1024 ** 2)).join(", ")}]`,
63
+ "```",
64
+ "",
65
+ "## Endpoints",
66
+ writeHead(),
67
+ ...report.endpoints
68
+ .slice()
69
+ .sort((a, b) => (b.mean ?? 0) - (a.mean ?? 0))
70
+ .map((endpoint) =>
71
+ writeRow(`${endpoint.method} ${endpoint.path}`, endpoint),
72
+ ),
73
+ "",
74
+ "> Unit: milliseconds",
75
+ "",
76
+ "## Failures",
77
+ "Method | Path | Count | Failures",
78
+ "-------|------|-------|----------",
79
+ ...report.endpoints
80
+ .filter((e) => e.success !== e.count)
81
+ .slice()
82
+ .sort((a, b) => b.count - a.count)
83
+ .map((e) =>
84
+ [
85
+ e.method,
86
+ e.path,
87
+ e.count.toLocaleString(),
88
+ (e.count - e.success).toLocaleString(),
89
+ ].join(" | "),
90
+ ),
91
+ ].join("\n");
92
+ };
93
+ }