UNPKG

crapifyme

Version:

Ultra-fast developer productivity CLI tools - remove comments, logs, and more

111 lines 4.34 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.OptimizedStringBuilder = exports.PerformanceMonitor = void 0; const logger_1 = require("./logger"); class PerformanceMonitor { constructor(logger) { this.startTime = 0; this.startMemory = null; this.logger = logger || new logger_1.Logger(false, false, false); } startMonitoring() { if (global.gc) { global.gc(); } this.startTime = performance.now(); this.startMemory = process.memoryUsage(); } stopMonitoring(tokensProcessed, fileSize) { const endTime = performance.now(); const endMemory = process.memoryUsage(); const processingTime = endTime - this.startTime; const throughput = tokensProcessed / processingTime; const metrics = { processingTime, memoryUsage: { heapUsed: endMemory.heapUsed, heapTotal: endMemory.heapTotal, external: endMemory.external, rss: endMemory.rss }, tokensProcessed, fileSize, throughput }; return metrics; } getMemoryUsage() { return process.memoryUsage(); } static compareBenchmarks(baseline, optimized) { const processingTimeReduction = ((baseline.processingTime - optimized.processingTime) / baseline.processingTime) * 100; const memoryReduction = ((baseline.memoryUsage.heapUsed - optimized.memoryUsage.heapUsed) / baseline.memoryUsage.heapUsed) * 100; const throughputIncrease = ((optimized.throughput - baseline.throughput) / baseline.throughput) * 100; return { baseline, optimized, improvement: { processingTimeReduction, memoryReduction, throughputIncrease } }; } logMetrics(metrics) { this.logger.info(`Performance Metrics: Processing Time: ${metrics.processingTime.toFixed(2)}ms Memory Usage: ${(metrics.memoryUsage.heapUsed / 1024 / 1024).toFixed(2)}MB Tokens Processed: ${metrics.tokensProcessed} File Size: ${(metrics.fileSize / 1024).toFixed(2)}KB Throughput: ${metrics.throughput.toFixed(2)} tokens/ms`); } static generateReport(benchmarks) { const report = ['Performance Optimization Report', '='.repeat(40)]; benchmarks.forEach((benchmark, index) => { report.push(`\nBenchmark ${index + 1}:`); report.push(` Processing Time: ${benchmark.baseline.processingTime.toFixed(2)}ms → ${benchmark.optimized.processingTime.toFixed(2)}ms (${benchmark.improvement.processingTimeReduction.toFixed(1)}% improvement)`); report.push(` Memory Usage: ${(benchmark.baseline.memoryUsage.heapUsed / 1024 / 1024).toFixed(2)}MB → ${(benchmark.optimized.memoryUsage.heapUsed / 1024 / 1024).toFixed(2)}MB (${benchmark.improvement.memoryReduction.toFixed(1)}% improvement)`); report.push(` Throughput: ${benchmark.baseline.throughput.toFixed(2)}${benchmark.optimized.throughput.toFixed(2)} tokens/ms (${benchmark.improvement.throughputIncrease.toFixed(1)}% improvement)`); }); return report.join('\n'); } } exports.PerformanceMonitor = PerformanceMonitor; class OptimizedStringBuilder { constructor(chunkSizeLimit = 64 * 1024) { this.chunks = []; this.totalLength = 0; this.chunkSizeLimit = chunkSizeLimit; } append(content) { this.chunks.push(content); this.totalLength += content.length; if (this.chunks.length > 1000) { this.consolidate(); } } toString() { if (this.chunks.length === 0) return ''; if (this.chunks.length === 1) return this.chunks[0]; return this.chunks.join(''); } get length() { return this.totalLength; } clear() { this.chunks = []; this.totalLength = 0; } consolidate() { if (this.chunks.length <= 1) return; const consolidated = this.chunks.join(''); this.chunks = [consolidated]; } } exports.OptimizedStringBuilder = OptimizedStringBuilder; //# sourceMappingURL=performance-monitor.js.map