bench-hexo 0.1.0-beta.3 → 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.
package/README.md CHANGED
@@ -1 +1,173 @@
1
- # bench-hexo
1
+ # bench-hexo
2
+
3
+ A benchmarking cli for Hexo, modified from [hexo#benchmark.js](https://github.com/hexojs/hexo/blob/master/test/benchmark.js)
4
+
5
+ ## Usage
6
+
7
+ ### Profiling
8
+
9
+ Use [0x](https://github.com/davidmarkclements/0x) to generate a flamegraph for the Hexo generation process.
10
+
11
+ #### Syntax
12
+
13
+ ```bash
14
+ npx bench-hexo profiling [options]
15
+ ```
16
+
17
+ #### Options
18
+
19
+ - `--max-old-space-size <number>`: Set the maximum old space size for Node.js (default: 4096MB).
20
+ - `-c, --concurrency <number>`: Set the number of concurrent processes (default: Infinity).
21
+ - `--no-clean`: Do not clean Hexo cache before profiling.
22
+
23
+ #### Example
24
+
25
+ ```plain
26
+ ✔ Cleaning complete.
27
+ ✔ Profiling complete. Flamegraph saved to 0x directory.
28
+ ✔ Hexo statistics loaded.
29
+
30
+ Hexo Statistics:
31
+
32
+ Number of posts: 2000
33
+ Number of post assets: 0
34
+ Avg of post content length: 17330
35
+ Number of pages: 0
36
+ Number of page assets: 0
37
+ Avg of page content length: 0
38
+ Number of tags: 100
39
+ Number of categories: 13
40
+ Number of routes: 4243
41
+ ```
42
+
43
+ ### Benchmark
44
+
45
+ Use perf_hooks to measure the performance metrics of the Hexo generation process.
46
+
47
+ #### Syntax
48
+
49
+ ```bash
50
+ npx bench-hexo benchmark [options]
51
+ ```
52
+
53
+ #### Options
54
+
55
+ - `--max-old-space-size <number>`: Set the maximum old space size for Node.js (default: 4096MB).
56
+ - `-c, --concurrency <number>`: Set the number of concurrent processes (default: Infinity).
57
+
58
+ #### Example
59
+
60
+ ```plain
61
+ ✔ Cleaning complete.
62
+ Cold processing
63
+ ┌──────────────────────────────┬───────────────┐
64
+ │ (index) │ Cost time (s) │
65
+ ├──────────────────────────────┼───────────────┤
66
+ │ Load Plugin/Scripts/Database │ '0.20s' │
67
+ │ Process Source │ '2.85s' │
68
+ │ Render Posts │ '2.99s' │
69
+ │ Render Files │ '7.10s' │
70
+ │ Save Database │ '0.64s' │
71
+ │ Total time │ '13.77s' │
72
+ └──────────────────────────────┴───────────────┘
73
+ Hot processing
74
+ ┌──────────────────────────────┬───────────────┐
75
+ │ (index) │ Cost time (s) │
76
+ ├──────────────────────────────┼───────────────┤
77
+ │ Load Plugin/Scripts/Database │ '1.17s' │
78
+ │ Process Source │ '1.17s' │
79
+ │ Render Files │ '6.08s' │
80
+ │ Save Database │ '0.64s' │
81
+ │ Total time │ '9.06s' │
82
+ └──────────────────────────────┴───────────────┘
83
+ ✔ Cleaning complete.
84
+ Another Cold processing
85
+ ┌──────────────────────────────┬───────────────┐
86
+ │ (index) │ Cost time (s) │
87
+ ├──────────────────────────────┼───────────────┤
88
+ │ Load Plugin/Scripts/Database │ '0.20s' │
89
+ │ Process Source │ '2.86s' │
90
+ │ Render Posts │ '2.95s' │
91
+ │ Render Files │ '7.08s' │
92
+ │ Save Database │ '0.64s' │
93
+ │ Total time │ '13.73s' │
94
+ └──────────────────────────────┴───────────────┘
95
+ ✔ Hexo statistics loaded.
96
+
97
+ Hexo Statistics:
98
+
99
+ Number of posts: 2000
100
+ Number of post assets: 0
101
+ Avg of post content length: 17330
102
+ Number of pages: 0
103
+ Number of page assets: 0
104
+ Avg of page content length: 0
105
+ Number of tags: 100
106
+ Number of categories: 13
107
+ Number of routes: 4243
108
+ ```
109
+
110
+
111
+ ### Memory
112
+
113
+ Use [megumu](https://github.com/D-Sketon/megumu) to measure the memory usage of the Hexo generation process.
114
+
115
+ #### Syntax
116
+
117
+ ```bash
118
+ node src/index.js memory [options]
119
+ ```
120
+
121
+ #### Options
122
+
123
+ - `-s, --sample-rate <number>`: Sample rate in milliseconds (default: 500ms).
124
+ - `--max-old-space-size <number>`: Set the maximum old space size for Node.js (default: 4096MB).
125
+ - `-c, --concurrency <number>`: Set the number of concurrent processes (default: Infinity).
126
+ - `--no-clean`: Do not clean Hexo cache before profiling.
127
+
128
+ #### Example
129
+
130
+ ```plain
131
+ ✔ Cleaning complete.
132
+ ✔ Memory profiling complete.
133
+ 1196.86┤ ╭╮
134
+ 1117.26┤ ││
135
+ 1037.66┤ ││
136
+ 958.06┤ ││ ╭
137
+ 878.46┤ ││ ╭╯
138
+ 798.86┤ ││ ╭╯
139
+ 719.27┤ ╭╯│ │
140
+ 639.67┤ │ ╰─────╯
141
+ 560.07┤ ╭╮ │
142
+ 480.47┤ │╰──╯
143
+ 400.87┼╮ ╭─╯
144
+ 321.27┤│ ╭╮╭╯
145
+ 241.68┤│ ╭─╯╰╯
146
+ 162.08┤╰─╯
147
+
148
+
149
+ RSS Memory Stats:
150
+
151
+ Avg: 523.54MB
152
+ Min: 162.08MB
153
+ Max: 1196.86MB
154
+ Midian: 483.52MB
155
+ Total Time: 12.866s
156
+ ✔ Hexo statistics loaded.
157
+
158
+ Hexo Statistics:
159
+
160
+ Number of posts: 2000
161
+ Number of post assets: 0
162
+ Avg of post content length: 17330
163
+ Number of pages: 0
164
+ Number of page assets: 0
165
+ Avg of page content length: 0
166
+ Number of tags: 100
167
+ Number of categories: 13
168
+ Number of routes: 4243
169
+ ```
170
+
171
+ ## License
172
+
173
+ MIT
@@ -1,2 +1,2 @@
1
- declare const _default: () => Promise<void>;
1
+ declare const _default: (concurrency?: number, maxOldSpaceSize?: number) => Promise<void>;
2
2
  export default _default;
package/dist/benchmark.js CHANGED
@@ -7,6 +7,7 @@ const child_process_1 = require("child_process");
7
7
  const path_1 = require("path");
8
8
  const perf_hooks_1 = require("perf_hooks");
9
9
  const ora_1 = __importDefault(require("ora"));
10
+ const stat_1 = __importDefault(require("./stat"));
10
11
  const hooks = [
11
12
  { regex: /Hexo version/, tag: "hexo-begin" },
12
13
  { regex: /Start processing/, tag: "processing" },
@@ -19,7 +20,7 @@ const hexoBin = (0, path_1.resolve)(process.cwd(), "node_modules/hexo/bin/hexo")
19
20
  function cleanUp() {
20
21
  (0, child_process_1.spawn)("node", [hexoBin, "clean"], { cwd: process.cwd() });
21
22
  }
22
- async function run_benchmark(name, spinner) {
23
+ async function run_benchmark(name, spinner, concurrency, maxOldSpaceSize) {
23
24
  let measureFinished = false;
24
25
  return new Promise((resolve) => {
25
26
  const result = {};
@@ -44,7 +45,14 @@ async function run_benchmark(name, spinner) {
44
45
  }
45
46
  });
46
47
  obs.observe({ entryTypes: ["measure"] });
47
- const hexo = (0, child_process_1.spawn)("node", [hexoBin, "g", "--debug"], {
48
+ const hexo = (0, child_process_1.spawn)("node", [
49
+ `--max-old-space-size=${maxOldSpaceSize}`,
50
+ hexoBin,
51
+ "g",
52
+ "--debug",
53
+ "--concurrency",
54
+ concurrency.toString(),
55
+ ], {
48
56
  cwd: process.cwd(),
49
57
  });
50
58
  hooks.forEach(({ regex, tag }) => {
@@ -96,7 +104,7 @@ async function run_benchmark(name, spinner) {
96
104
  });
97
105
  });
98
106
  }
99
- exports.default = async () => {
107
+ exports.default = async (concurrency = Infinity, maxOldSpaceSize = 4096) => {
100
108
  let spinner = (0, ora_1.default)({ text: "Cleaning...", color: "cyan" }).start();
101
109
  cleanUp();
102
110
  spinner.succeed("Cleaning complete.");
@@ -104,12 +112,12 @@ exports.default = async () => {
104
112
  text: "Running cold processing...",
105
113
  color: "cyan",
106
114
  }).start();
107
- await run_benchmark("Cold processing", spinner);
115
+ await run_benchmark("Cold processing", spinner, concurrency, maxOldSpaceSize);
108
116
  spinner = (0, ora_1.default)({
109
117
  text: "Running hot processing...",
110
118
  color: "cyan",
111
119
  }).start();
112
- await run_benchmark("Hot processing", spinner);
120
+ await run_benchmark("Hot processing", spinner, concurrency, maxOldSpaceSize);
113
121
  spinner = (0, ora_1.default)({ text: "Cleaning...", color: "cyan" }).start();
114
122
  cleanUp();
115
123
  spinner.succeed("Cleaning complete.");
@@ -117,6 +125,7 @@ exports.default = async () => {
117
125
  text: "Running another cold processing...",
118
126
  color: "cyan",
119
127
  }).start();
120
- await run_benchmark("Another Cold processing", spinner);
128
+ await run_benchmark("Another Cold processing", spinner, concurrency, maxOldSpaceSize);
129
+ await (0, stat_1.default)();
121
130
  };
122
131
  //# sourceMappingURL=benchmark.js.map
@@ -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/dist/index.js CHANGED
@@ -5,30 +5,45 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  };
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  const commander_1 = require("commander");
8
+ const child_process_1 = require("child_process");
9
+ const path_1 = __importDefault(require("path"));
8
10
  const profiling_1 = __importDefault(require("./profiling"));
9
11
  const benchmark_1 = __importDefault(require("./benchmark"));
10
- const memory_1 = __importDefault(require("./memory"));
11
12
  const program = new commander_1.Command();
12
13
  program
13
14
  .command("profiling")
14
15
  .description("Run Hexo profiling")
16
+ .option("--max-old-space-size <number>", "Max old space size in MB", "4096")
17
+ .option("-c, --concurrency <number>", "Concurrency level", "Infinity")
15
18
  .option("--no-clean", "Do not clean Hexo cache before profiling")
16
19
  .action(async (option) => {
17
- await (0, profiling_1.default)(option.clean);
20
+ await (0, profiling_1.default)(option.clean, Number(option.concurrency), Number(option.maxOldSpaceSize));
18
21
  });
19
22
  program
20
23
  .command("benchmark")
24
+ .option("--max-old-space-size <number>", "Max old space size in MB", "4096")
25
+ .option("-c, --concurrency <number>", "Concurrency level", "Infinity")
21
26
  .description("Run Hexo benchmark")
22
- .action(async () => {
23
- await (0, benchmark_1.default)();
27
+ .action(async (option) => {
28
+ await (0, benchmark_1.default)(Number(option.concurrency), Number(option.maxOldSpaceSize));
24
29
  });
25
30
  program
26
31
  .command("memory")
27
32
  .description("Run Hexo memory profiling")
33
+ .option("--max-old-space-size <number>", "Max old space size in MB", "4096")
28
34
  .option("-s, --sample-rate <number>", "Sample rate in ms", "500")
35
+ .option("-c, --concurrency <number>", "Concurrency level", "Infinity")
29
36
  .option("--no-clean", "Do not clean Hexo cache before profiling")
30
37
  .action(async (option) => {
31
- await (0, memory_1.default)(parseInt(option.sampleRate, 10), option.clean);
38
+ (0, child_process_1.spawn)("node", [
39
+ `--max-old-space-size=${option.maxOldSpaceSize}`,
40
+ path_1.default.resolve(__dirname, "./memory.js"),
41
+ option.sampleRate,
42
+ option.concurrency,
43
+ option.clean,
44
+ ], {
45
+ stdio: "inherit",
46
+ });
32
47
  });
33
48
  program.parse();
34
49
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAEA,yCAAoC;AACpC,4DAAoC;AACpC,4DAAoC;AACpC,sDAA8B;AAE9B,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,oBAAoB,CAAC;KACjC,MAAM,CAAC,YAAY,EAAE,0CAA0C,CAAC;KAChE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;IACvB,MAAM,IAAA,mBAAS,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,oBAAoB,CAAC;KACjC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,IAAA,mBAAS,GAAE,CAAC;AACpB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,4BAA4B,EAAE,mBAAmB,EAAE,KAAK,CAAC;KAChE,MAAM,CAAC,YAAY,EAAE,0CAA0C,CAAC;KAChE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;IACvB,MAAM,IAAA,gBAAM,EAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAEA,yCAAoC;AACpC,iDAAsC;AACtC,gDAAwB;AACxB,4DAAoC;AACpC,4DAAoC;AAEpC,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,oBAAoB,CAAC;KACjC,MAAM,CAAC,+BAA+B,EAAE,0BAA0B,EAAE,MAAM,CAAC;KAC3E,MAAM,CAAC,4BAA4B,EAAE,mBAAmB,EAAE,UAAU,CAAC;KACrE,MAAM,CAAC,YAAY,EAAE,0CAA0C,CAAC;KAChE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;IACvB,MAAM,IAAA,mBAAS,EACb,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAC1B,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAC/B,CAAC;AACJ,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,WAAW,CAAC;KACpB,MAAM,CAAC,+BAA+B,EAAE,0BAA0B,EAAE,MAAM,CAAC;KAC3E,MAAM,CAAC,4BAA4B,EAAE,mBAAmB,EAAE,UAAU,CAAC;KACrE,WAAW,CAAC,oBAAoB,CAAC;KACjC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;IACvB,MAAM,IAAA,mBAAS,EAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;AAC9E,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,+BAA+B,EAAE,0BAA0B,EAAE,MAAM,CAAC;KAC3E,MAAM,CAAC,4BAA4B,EAAE,mBAAmB,EAAE,KAAK,CAAC;KAChE,MAAM,CAAC,4BAA4B,EAAE,mBAAmB,EAAE,UAAU,CAAC;KACrE,MAAM,CAAC,YAAY,EAAE,0CAA0C,CAAC;KAChE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;IACvB,IAAA,qBAAK,EACH,MAAM,EACN;QACE,wBAAwB,MAAM,CAAC,eAAe,EAAE;QAChD,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC;QACtC,MAAM,CAAC,UAAU;QACjB,MAAM,CAAC,WAAW;QAClB,MAAM,CAAC,KAAK;KACb,EACD;QACE,KAAK,EAAE,SAAS;KACjB,CACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
package/dist/memory.d.ts CHANGED
@@ -1,2 +1 @@
1
- declare const _default: (sampleRate?: number, clean?: boolean) => Promise<void>;
2
- export default _default;
1
+ export {};
package/dist/memory.js CHANGED
@@ -10,6 +10,7 @@ const hexo_1 = __importDefault(require("hexo"));
10
10
  const ora_1 = __importDefault(require("ora"));
11
11
  const child_process_1 = require("child_process");
12
12
  const path_1 = require("path");
13
+ const stat_1 = __importDefault(require("./stat"));
13
14
  const MARGIN_FACTOR = 1.3;
14
15
  function sampleData(oldArr, width) {
15
16
  const factor = Math.round(oldArr.length / width);
@@ -29,7 +30,7 @@ function getSampleStats(arr) {
29
30
  midian: midian.toFixed(2),
30
31
  };
31
32
  }
32
- exports.default = async (sampleRate = 500, clean = true) => {
33
+ const memoryBenchmark = async (sampleRate = 500, clean = true, concurrency = Infinity) => {
33
34
  const hexoBin = (0, path_1.resolve)(process.cwd(), "node_modules/hexo/bin/hexo");
34
35
  if (clean) {
35
36
  const spinner = (0, ora_1.default)({ text: "Cleaning...", color: "cyan" }).start();
@@ -49,9 +50,11 @@ exports.default = async (sampleRate = 500, clean = true) => {
49
50
  color: "cyan",
50
51
  }).start();
51
52
  const hexo = new hexo_1.default(process.cwd(), { silent: true });
53
+ const startTime = Date.now();
52
54
  memory.startSampling();
53
55
  await hexo.init();
54
- await hexo.call("generate", {});
56
+ await hexo.call("generate", { concurrency });
57
+ const endTime = Date.now();
55
58
  memory.destroy();
56
59
  spinner.succeed("Memory profiling complete.");
57
60
  const width = Math.floor(process.stdout.columns / MARGIN_FACTOR);
@@ -67,6 +70,20 @@ exports.default = async (sampleRate = 500, clean = true) => {
67
70
  ["Min: ", `${stats.min}MB`],
68
71
  ["Max: ", `${stats.max}MB`],
69
72
  ["Midian: ", `${stats.midian}MB`],
73
+ ["Total Time: ", `${(endTime - startTime) / 1000}s`],
70
74
  ]));
75
+ await (0, stat_1.default)();
71
76
  };
77
+ const args = process.argv.slice(2);
78
+ const sampleRate = Number(args[0]) || 500;
79
+ const concurrency = Number(args[1]) || Infinity;
80
+ const clean = args[2] !== "false";
81
+ memoryBenchmark(sampleRate, clean, concurrency)
82
+ .then(() => {
83
+ process.exit(0);
84
+ })
85
+ .catch((err) => {
86
+ console.error("Error during memory profiling:", err);
87
+ process.exit(1);
88
+ });
72
89
  //# sourceMappingURL=memory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":";;;;;AAAA,mCAAgC;AAChC,4DAAoC;AACpC,sEAAoC;AACpC,gDAAwB;AACxB,8CAAsB;AACtB,iDAAsC;AACtC,+BAA+B;AAC/B,kDAA0B;AAE1B,MAAM,aAAa,GAAG,GAAG,CAAC;AAE1B,SAAS,UAAU,CAAC,MAAgB,EAAE,KAAa;IACjD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;IACjD,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,KAAK,EAAE,KAAK,EAAE,GAAG;QAC9C,OAAO,KAAK,GAAG,MAAM,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CAAC,GAAa;IACnC,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;IACxD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IACrE,OAAO;QACL,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACnB,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACnB,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;KAC1B,CAAC;AACJ,CAAC;AAED,MAAM,eAAe,GAAG,KAAK,EAC3B,aAAqB,GAAG,EACxB,QAAiB,IAAI,EACrB,cAAsB,QAAQ,EAC9B,EAAE;IACF,MAAM,OAAO,GAAG,IAAA,cAAO,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,4BAA4B,CAAC,CAAC;IACrE,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QACpE,IAAA,qBAAK,EAAC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;IAC5B,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,CAAC,gBAAgB,CACrB;QACE,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,KAAK;KACd,EACD,CAAC,IAAI,EAAE,EAAE;QACP,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;IAC5C,CAAC,EACD,UAAU,CACX,CAAC;IAEF,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC;QAClB,IAAI,EAAE,6BAA6B;QACnC,KAAK,EAAE,MAAM;KACd,CAAC,CAAC,KAAK,EAAE,CAAC;IACX,MAAM,IAAI,GAAG,IAAI,cAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,CAAC,aAAa,EAAE,CAAC;IACvB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IAClB,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,MAAM,CAAC,OAAO,EAAE,CAAC;IACjB,OAAO,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;IAE9C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,aAAa,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CACT,oBAAU,CAAC,IAAI,CACb,WAAW,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EACzE;QACE,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,aAAa,GAAG,EAAE,EAAE,EAAE,CAAC;QAC9D,MAAM,EAAE,CAAC,oBAAU,CAAC,KAAK,CAAC;KAC3B,CACF,CACF,CAAC;IACF,MAAM,KAAK,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CACT,IAAA,yBAAK,EAAC;QACJ,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC;QAC3B,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC;QAC3B,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC;QAC3B,CAAC,UAAU,EAAE,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC;QACjC,CAAC,cAAc,EAAE,GAAG,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,IAAI,GAAG,CAAC;KACrD,CAAC,CACH,CAAC;IAEF,MAAM,IAAA,cAAI,GAAE,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AAC1C,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;AAChD,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;AAElC,eAAe,CAAC,UAAU,EAAE,KAAK,EAAE,WAAW,CAAC;KAC5C,IAAI,CAAC,GAAG,EAAE;IACT,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC;KACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACb,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC;IACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -1,2 +1,2 @@
1
- declare const _default: (clean?: boolean) => Promise<void>;
1
+ declare const _default: (clean?: boolean, concurrency?: number, maxOldSpaceSize?: number) => Promise<void>;
2
2
  export default _default;
package/dist/profiling.js CHANGED
@@ -8,7 +8,8 @@ const fs_1 = __importDefault(require("fs"));
8
8
  const _0x_1 = __importDefault(require("0x"));
9
9
  const ora_1 = __importDefault(require("ora"));
10
10
  const child_process_1 = require("child_process");
11
- exports.default = async (clean = true) => {
11
+ const stat_1 = __importDefault(require("./stat"));
12
+ exports.default = async (clean = true, concurrency = Infinity, maxOldSpaceSize = 4096) => {
12
13
  const zeroEksDir = (0, path_1.resolve)(process.cwd(), "0x");
13
14
  const hexoBin = (0, path_1.resolve)(process.cwd(), "node_modules/hexo/bin/hexo");
14
15
  if (clean) {
@@ -21,12 +22,22 @@ exports.default = async (clean = true) => {
21
22
  }
22
23
  const spinner = (0, ora_1.default)({ text: "Running profiling...", color: "cyan" }).start();
23
24
  const zeroEksOpts = {
24
- argv: [hexoBin, "g", "--cwd", process.cwd(), "--silent"],
25
+ argv: [
26
+ `--max-old-space-size=${maxOldSpaceSize}`,
27
+ hexoBin,
28
+ "g",
29
+ "--cwd",
30
+ process.cwd(),
31
+ "--silent",
32
+ "--concurrency",
33
+ concurrency.toString(),
34
+ ],
25
35
  workingDir: ".", // A workaround for https://github.com/davidmarkclements/0x/issues/228
26
36
  outputDir: zeroEksDir,
27
37
  title: "Hexo Flamegraph",
28
38
  };
29
39
  await (0, _0x_1.default)(zeroEksOpts);
30
40
  spinner.succeed("Profiling complete. Flamegraph saved to 0x directory.");
41
+ await (0, stat_1.default)();
31
42
  };
32
43
  //# sourceMappingURL=profiling.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"profiling.js","sourceRoot":"","sources":["../src/profiling.ts"],"names":[],"mappings":";;;;;AAAA,+BAA+B;AAC/B,4CAAoB;AACpB,6CAAyB;AACzB,8CAAsB;AACtB,iDAAsC;AAEtC,kBAAe,KAAK,EAAE,QAAiB,IAAI,EAAE,EAAE;IAC7C,MAAM,UAAU,GAAG,IAAA,cAAO,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,IAAA,cAAO,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,4BAA4B,CAAC,CAAC;IAErE,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QACpE,IAAA,qBAAK,EAAC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,YAAE,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IAC7E,MAAM,WAAW,GAAG;QAClB,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC;QACxD,UAAU,EAAE,GAAG,EAAE,sEAAsE;QACvF,SAAS,EAAE,UAAU;QACrB,KAAK,EAAE,iBAAiB;KACzB,CAAC;IACF,MAAM,IAAA,aAAO,EAAC,WAAW,CAAC,CAAC;IAE3B,OAAO,CAAC,OAAO,CAAC,uDAAuD,CAAC,CAAC;AAC3E,CAAC,CAAC"}
1
+ {"version":3,"file":"profiling.js","sourceRoot":"","sources":["../src/profiling.ts"],"names":[],"mappings":";;;;;AAAA,+BAA+B;AAC/B,4CAAoB;AACpB,6CAAyB;AACzB,8CAAsB;AACtB,iDAAsC;AACtC,kDAA0B;AAE1B,kBAAe,KAAK,EAClB,QAAiB,IAAI,EACrB,cAAsB,QAAQ,EAC9B,kBAA0B,IAAI,EAC9B,EAAE;IACF,MAAM,UAAU,GAAG,IAAA,cAAO,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,IAAA,cAAO,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,4BAA4B,CAAC,CAAC;IAErE,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QACpE,IAAA,qBAAK,EAAC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,YAAE,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IAC7E,MAAM,WAAW,GAAG;QAClB,IAAI,EAAE;YACJ,wBAAwB,eAAe,EAAE;YACzC,OAAO;YACP,GAAG;YACH,OAAO;YACP,OAAO,CAAC,GAAG,EAAE;YACb,UAAU;YACV,eAAe;YACf,WAAW,CAAC,QAAQ,EAAE;SACvB;QACD,UAAU,EAAE,GAAG,EAAE,sEAAsE;QACvF,SAAS,EAAE,UAAU;QACrB,KAAK,EAAE,iBAAiB;KACzB,CAAC;IACF,MAAM,IAAA,aAAO,EAAC,WAAW,CAAC,CAAC;IAE3B,OAAO,CAAC,OAAO,CAAC,uDAAuD,CAAC,CAAC;IAEzE,MAAM,IAAA,cAAI,GAAE,CAAC;AACf,CAAC,CAAC"}
package/dist/stat.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ declare const _default: () => Promise<void>;
2
+ export default _default;
package/dist/stat.js ADDED
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const hexo_1 = __importDefault(require("hexo"));
7
+ const fast_text_table_1 = __importDefault(require("fast-text-table"));
8
+ const ora_1 = __importDefault(require("ora"));
9
+ exports.default = async () => {
10
+ const hexo = new hexo_1.default(process.cwd(), { silent: true });
11
+ const spinner = (0, ora_1.default)({
12
+ text: "Starting Hexo statistics...",
13
+ color: "cyan",
14
+ }).start();
15
+ // https://github.com/hexojs/hexo/issues/2579#issuecomment-2058873076
16
+ try {
17
+ await hexo.init();
18
+ await hexo.load();
19
+ const posts = hexo.locals.get("posts").toArray();
20
+ const postAsset = hexo.model("PostAsset");
21
+ let numOfPostAssets = 0;
22
+ let postContentTotalLen = 0;
23
+ for (let post of posts) {
24
+ const dir = post.path.slice(0, post.path.lastIndexOf("/"));
25
+ const assets = postAsset.filter((x) => x._id.includes(dir));
26
+ numOfPostAssets = numOfPostAssets + assets.length;
27
+ postContentTotalLen = postContentTotalLen + post.content.length;
28
+ }
29
+ const pages = hexo.locals.get("pages").toArray();
30
+ const pageAsset = hexo.model("Asset");
31
+ let numOfPageAssets = 0;
32
+ let pageContentTotalLen = 0;
33
+ for (let page of pages) {
34
+ const dir = page.path.slice(0, page.path.lastIndexOf("/"));
35
+ const assets = pageAsset.filter((x) => x._id.includes(dir));
36
+ numOfPageAssets = numOfPageAssets + assets.length;
37
+ pageContentTotalLen = pageContentTotalLen + page.content.length;
38
+ }
39
+ const tags = hexo.locals.get("tags").toArray();
40
+ const categories = hexo.locals.get("categories").toArray();
41
+ const routes = hexo.route.list();
42
+ spinner.succeed("Hexo statistics loaded.");
43
+ console.log("\nHexo Statistics:\n");
44
+ console.log((0, fast_text_table_1.default)([
45
+ ["Number of posts: ", `${posts.length}`],
46
+ ["Number of post assets: ", `${numOfPostAssets}`],
47
+ [
48
+ "Avg of post content length: ",
49
+ `${posts.length > 0
50
+ ? Math.floor(postContentTotalLen / posts.length)
51
+ : 0}`,
52
+ ],
53
+ ["Number of pages: ", `${pages.length}`],
54
+ ["Number of page assets: ", `${numOfPageAssets}`],
55
+ [
56
+ "Avg of page content length: ",
57
+ `${pages.length > 0
58
+ ? Math.floor(pageContentTotalLen / pages.length)
59
+ : 0}`,
60
+ ],
61
+ ["Number of tags: ", `${tags.length}`],
62
+ ["Number of categories: ", `${categories.length}`],
63
+ ["Number of routes: ", `${routes.length}`],
64
+ ]));
65
+ }
66
+ catch (e) {
67
+ spinner.fail("Error loading Hexo statistics.");
68
+ console.error(e);
69
+ }
70
+ };
71
+ //# sourceMappingURL=stat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stat.js","sourceRoot":"","sources":["../src/stat.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bench-hexo",
3
- "version": "0.1.0-beta.3",
3
+ "version": "0.2.0",
4
4
  "bin": {
5
5
  "bench-hexo": "dist/index.js"
6
6
  },