UNPKG

aiwg

Version:

Deployment tool and support utility for AI context. Copies agents, skills, commands, rules, and behaviors into the paths each AI platform reads (Claude Code, Codex, Copilot, Cursor, Warp, OpenClaw, and 6 more) so one source of truth works across 10 platfo

165 lines 5.05 kB
/** * PerformanceProfiler - NFR performance measurement with statistical rigor * * Provides high-precision performance measurement, statistical analysis, * and memory profiling for validating NFR performance targets. * * Features: * - Sub-millisecond precision timing using performance.now() * - Statistical analysis (95th percentile, 95% confidence intervals) * - Outlier detection and filtering (IQR method) * - Memory profiling support * - Async operation support * - Comprehensive reporting * * @module testing/performance-profiler */ /** * Performance measurement result with statistical analysis */ export interface PerformanceResult { /** Arithmetic mean of all samples */ mean: number; /** Median (50th percentile) of all samples */ median: number; /** 95th percentile latency */ p95: number; /** 99th percentile latency */ p99: number; /** Minimum observed value */ min: number; /** Maximum observed value */ max: number; /** Standard deviation */ stddev: number; /** 95% confidence interval [lower, upper] bounds */ confidenceInterval: [number, number]; /** Raw sample measurements (milliseconds) */ samples: number[]; /** Number of iterations performed */ iterations: number; /** Number of outliers removed (if filtering enabled) */ outliersRemoved?: number; } /** * Memory usage measurement result */ export interface MemoryResult { /** Heap memory used (bytes) */ heapUsed: number; /** Total heap memory allocated (bytes) */ heapTotal: number; /** External memory used (bytes) */ external: number; /** ArrayBuffer memory used (bytes) */ arrayBuffers: number; } /** * Configuration options for performance measurements */ export interface ProfilerOptions { /** Number of warmup iterations before measurement (default: 10) */ warmupIterations?: number; /** Whether to filter outliers using IQR method (default: false) */ filterOutliers?: boolean; /** Confidence level for confidence interval (default: 0.95) */ confidenceLevel?: number; } /** * PerformanceProfiler - Measure and validate NFR performance targets * * @example * ```typescript * const profiler = new PerformanceProfiler(); * * // Measure synchronous operation * const result = profiler.measureSync(() => { * // Operation to measure * }, 1000); * * console.log(`P95 latency: ${result.p95.toFixed(3)}ms`); * console.log(`95% CI: [${result.confidenceInterval[0].toFixed(3)}, ${result.confidenceInterval[1].toFixed(3)}]ms`); * ``` */ export declare class PerformanceProfiler { private options; constructor(options?: ProfilerOptions); /** * Measure synchronous operation performance * * @param fn - Function to measure * @param iterations - Number of measurement iterations * @returns Performance measurement results with statistics */ measureSync(fn: () => void, iterations: number): PerformanceResult; /** * Measure asynchronous operation performance * * @param fn - Async function to measure * @param iterations - Number of measurement iterations * @returns Performance measurement results with statistics */ measureAsync(fn: () => Promise<void>, iterations: number): Promise<PerformanceResult>; /** * Calculate specific percentile from samples * * @param samples - Array of measurements * @param percentile - Percentile to calculate (0-100) * @returns Percentile value */ calculatePercentile(samples: number[], percentile: number): number; /** * Calculate confidence interval using t-distribution * * @param samples - Array of measurements * @param confidence - Confidence level (0-1) * @returns Confidence interval [lower, upper] bounds */ calculateConfidenceInterval(samples: number[], confidence: number): [number, number]; /** * Measure memory usage of an operation * * @param fn - Function to measure memory usage * @returns Memory usage statistics */ measureMemory(fn: () => void): MemoryResult; /** * Generate formatted performance report * * @param results - Array of performance results to report * @returns Formatted report string */ generateReport(results: PerformanceResult[]): string; /** * Analyze raw samples and compute statistics * * @private */ private analyzeResults; /** * Filter outliers using IQR (Interquartile Range) method * * @private */ private filterOutliers; /** * Calculate arithmetic mean * * @private */ private calculateMean; /** * Calculate standard deviation * * @private */ private calculateStdDev; /** * Get critical t-value for confidence interval * Uses approximation for large sample sizes * * @private */ private getTCriticalValue; } //# sourceMappingURL=performance-profiler.d.ts.map