traxxx/src/utils/jsdom-perf.js

39 lines
1021 B
JavaScript
Executable File

'use strict';
const util = require('util');
const fs = require('fs').promises;
const Promise = require('bluebird');
const { JSDOM } = require('jsdom');
const waitImmediate = util.promisify(setImmediate);
async function init() {
let peak = 0;
const files = await fs.readdir('./html');
// const dom = new JSDOM('<html><body></body></html>', { runScripts: 'dangerously' });
await Promise.map(Array.from({ length: 10 }).map(() => files).flat(), async (filename) => {
const html = await fs.readFile(`./html/${filename}`, 'utf8');
const dom = new JSDOM(html);
// dom.window.document.body.innerHTML = html;
dom.window.close();
const usage = process.memoryUsage.rss() / 1000000;
peak = Math.max(usage, peak);
console.log(`Memory usage: ${usage.toFixed(2)} MB, peak ${peak.toFixed(2)} MB`);
await waitImmediate;
}, {
concurrency: 1,
});
await Promise.delay(2000);
console.log(`Final memory usage: ${(process.memoryUsage.rss() / 1000000).toFixed(2)} MB, max ${peak.toFixed(2)} MB`);
}
init();