新增: - backend/venv/ - Python 虚拟环境 - backend/start.sh - 启动脚本(使用虚拟环境) - backend/requirements.txt - 依赖列表 - .gitignore - 忽略虚拟环境和缓存文件 说明: - 每个项目使用独立虚拟环境 - 避免依赖冲突 - 启动脚本自动创建和激活虚拟环境
63 lines
2.0 KiB
JavaScript
63 lines
2.0 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
const perf_hooks_1 = require("perf_hooks");
|
|
function createPerformance() {
|
|
let enabled = false;
|
|
let timeOrigin;
|
|
let marks;
|
|
let measurements;
|
|
function enable() {
|
|
enabled = true;
|
|
marks = new Map();
|
|
measurements = new Map();
|
|
timeOrigin = perf_hooks_1.performance.now();
|
|
}
|
|
function disable() {
|
|
enabled = false;
|
|
}
|
|
function mark(name) {
|
|
if (enabled) {
|
|
marks.set(name, perf_hooks_1.performance.now());
|
|
}
|
|
}
|
|
function measure(name, startMark, endMark) {
|
|
if (enabled) {
|
|
const start = (startMark && marks.get(startMark)) || timeOrigin;
|
|
const end = (endMark && marks.get(endMark)) || perf_hooks_1.performance.now();
|
|
measurements.set(name, (measurements.get(name) || 0) + (end - start));
|
|
}
|
|
}
|
|
function markStart(name) {
|
|
if (enabled) {
|
|
mark(`${name} start`);
|
|
}
|
|
}
|
|
function markEnd(name) {
|
|
if (enabled) {
|
|
mark(`${name} end`);
|
|
measure(name, `${name} start`, `${name} end`);
|
|
}
|
|
}
|
|
function formatName(name, width = 0) {
|
|
return `${name}:`.padEnd(width);
|
|
}
|
|
function formatDuration(duration, width = 0) {
|
|
return `${(duration / 1000).toFixed(2)} s`.padStart(width);
|
|
}
|
|
function print() {
|
|
if (enabled) {
|
|
let nameWidth = 0;
|
|
let durationWidth = 0;
|
|
measurements.forEach((duration, name) => {
|
|
nameWidth = Math.max(nameWidth, formatName(name).length);
|
|
durationWidth = Math.max(durationWidth, formatDuration(duration).length);
|
|
});
|
|
measurements.forEach((duration, name) => {
|
|
console.log(`${formatName(name, nameWidth)} ${formatDuration(duration, durationWidth)}`);
|
|
});
|
|
}
|
|
}
|
|
return { enable, disable, mark, markStart, markEnd, measure, print };
|
|
}
|
|
exports.createPerformance = createPerformance;
|