UNPKG

@oaklean/profiler-core

Version:

Part of the @oaklean suite. It provides all basic functions to work with the `.oak` file format. It allows parsing the `.oak` file format as well as tools for analyzing the measurement values. It also provides all necessary capabilities required for prec

104 lines 8.35 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.PerformanceHelper = void 0; const fs_1 = __importDefault(require("fs")); const TimeHelper_1 = require("./TimeHelper"); const PermissionHelper_1 = require("./PermissionHelper"); const LoggerHelper_1 = require("./LoggerHelper"); const env_1 = require("../constants/env"); class PerformanceHelper { constructor() { this._measures = new Map(); this._firstMeasure = BigInt(0); this._lastMeasure = BigInt(0); } static loadFromFile(path) { if (fs_1.default.existsSync(path.toPlatformString())) { const jsonString = fs_1.default .readFileSync(path.toPlatformString(), 'utf8') .toString(); return JSON.parse(jsonString); } return { measures: {} }; } static storeToFile(path, data) { PermissionHelper_1.PermissionHelper.writeFileWithUserPermission(path, JSON.stringify(data, null, 2)); } exportAndSum(path) { if (!env_1.OAKLEAN_ENABLE_PERFORMANCE_TRACKING) { return; } const report = PerformanceHelper.loadFromFile(path); for (const [name, measure] of this._measures) { if (measure.end) { const diff = Number(measure.end - measure.start); report.measures[name] = (report.measures[name] || 0) + diff; } } PerformanceHelper.storeToFile(path, report); } start(name) { if (!env_1.OAKLEAN_ENABLE_PERFORMANCE_TRACKING) { return; } const time = TimeHelper_1.TimeHelper.getCurrentHighResolutionTime(); if (!this._firstMeasure) { this._firstMeasure = time; } this._measures.set(name, { start: time, end: null }); } stop(name) { if (!env_1.OAKLEAN_ENABLE_PERFORMANCE_TRACKING) { return; } const time = TimeHelper_1.TimeHelper.getCurrentHighResolutionTime(); this._lastMeasure = time; const measure = this._measures.get(name); if (measure) { measure.end = time; } } static printAccumulatedReport(path) { const loadedReport = PerformanceHelper.loadFromFile(path); LoggerHelper_1.LoggerHelper.log('Accumulated performance report:'); const report = {}; for (const name of Object.keys(loadedReport.measures)) { report[name] = { Duration: `${(loadedReport.measures[name] / 1e9).toFixed(3)} s` }; } LoggerHelper_1.LoggerHelper.table(report, ['Duration']); } printReport(title) { if (!env_1.OAKLEAN_ENABLE_PERFORMANCE_TRACKING) { return; } const report = {}; const total = Number(this._lastMeasure - this._firstMeasure); for (const [name, measure] of this._measures) { if (measure.end) { const diff = Number(measure.end - measure.start); report[name] = { Duration: `${(diff / 1e9).toFixed(3)} s`, Percentage: `${((diff / total) * 100).toFixed(2)} %` }; } else { report[name] = { Duration: 'N/A', Percentage: 'N/A' }; } } LoggerHelper_1.LoggerHelper.log(`Performance report (${title}):`, (total / 1e9).toFixed(3), 's'); LoggerHelper_1.LoggerHelper.table(report, ['Duration', 'Percentage']); } } exports.PerformanceHelper = PerformanceHelper; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGVyZm9ybWFuY2VIZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaGVscGVyL1BlcmZvcm1hbmNlSGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDRDQUFtQjtBQUVuQiw2Q0FBeUM7QUFDekMseURBQXFEO0FBQ3JELGlEQUE2QztBQVM3QywwQ0FBc0U7QUFFdEUsTUFBYSxpQkFBaUI7SUFLN0I7UUFDQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksR0FBRyxFQUFnQyxDQUFBO1FBQ3hELElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBdUIsQ0FBQTtRQUNwRCxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQXVCLENBQUE7SUFDcEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBaUI7UUFDcEMsSUFBSSxZQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUM1QyxNQUFNLFVBQVUsR0FBRyxZQUFFO2lCQUNuQixZQUFZLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxDQUFDO2lCQUM3QyxRQUFRLEVBQUUsQ0FBQTtZQUNaLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQXVCLENBQUE7UUFDcEQsQ0FBQztRQUNELE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUE7SUFDeEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBaUIsRUFBRSxJQUF3QjtRQUM3RCxtQ0FBZ0IsQ0FBQywyQkFBMkIsQ0FDM0MsSUFBSSxFQUNKLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FDN0IsQ0FBQTtJQUNGLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBaUI7UUFDN0IsSUFBSSxDQUFDLHlDQUFtQyxFQUFFLENBQUM7WUFDMUMsT0FBTTtRQUNQLENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFbkQsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM5QyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDakIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO2dCQUNoRCxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUE7WUFDNUQsQ0FBQztRQUNGLENBQUM7UUFDRCxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBQzVDLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBWTtRQUNqQixJQUFJLENBQUMseUNBQW1DLEVBQUUsQ0FBQztZQUMxQyxPQUFNO1FBQ1AsQ0FBQztRQUNELE1BQU0sSUFBSSxHQUFHLHVCQUFVLENBQUMsNEJBQTRCLEVBQUUsQ0FBQTtRQUN0RCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFBO1FBQzFCLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUU7WUFDeEIsS0FBSyxFQUFFLElBQUk7WUFDWCxHQUFHLEVBQUUsSUFBSTtTQUNULENBQUMsQ0FBQTtJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsSUFBWTtRQUNoQixJQUFJLENBQUMseUNBQW1DLEVBQUUsQ0FBQztZQUMxQyxPQUFNO1FBQ1AsQ0FBQztRQUNELE1BQU0sSUFBSSxHQUFHLHVCQUFVLENBQUMsNEJBQTRCLEVBQUUsQ0FBQTtRQUN0RCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQTtRQUN4QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN4QyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUE7UUFDbkIsQ0FBQztJQUNGLENBQUM7SUFFRCxNQUFNLENBQUMsc0JBQXNCLENBQUMsSUFBaUI7UUFDOUMsTUFBTSxZQUFZLEdBQUcsaUJBQWlCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3pELDJCQUFZLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxDQUFDLENBQUE7UUFDbkQsTUFBTSxNQUFNLEdBQThDLEVBQUUsQ0FBQTtRQUM1RCxLQUFLLE1BQU0sSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDdkQsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHO2dCQUNkLFFBQVEsRUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUk7YUFDL0QsQ0FBQTtRQUNGLENBQUM7UUFFRCwyQkFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYTtRQUN4QixJQUFJLENBQUMseUNBQW1DLEVBQUUsQ0FBQztZQUMxQyxPQUFNO1FBQ1AsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUtSLEVBQUUsQ0FBQTtRQUNOLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUM1RCxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzlDLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNqQixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQ2hELE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRztvQkFDZCxRQUFRLEVBQUUsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUk7b0JBQ3hDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJO2lCQUNwRCxDQUFBO1lBQ0YsQ0FBQztpQkFBTSxDQUFDO2dCQUNQLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRztvQkFDZCxRQUFRLEVBQUUsS0FBSztvQkFDZixVQUFVLEVBQUUsS0FBSztpQkFDakIsQ0FBQTtZQUNGLENBQUM7UUFDRixDQUFDO1FBQ0QsMkJBQVksQ0FBQyxHQUFHLENBQ2YsdUJBQXVCLEtBQUssSUFBSSxFQUNoQyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQ3hCLEdBQUcsQ0FDSCxDQUFBO1FBQ0QsMkJBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUE7SUFDdkQsQ0FBQztDQUNEO0FBbEhELDhDQWtIQyJ9