traceperf 0.1.4 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +230 -263
- package/dist/browser.d.ts +52 -7
- package/dist/browser.js +198 -35
- package/dist/browser.js.map +1 -1
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.js +1 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/optimized-performance-monitor.d.ts +227 -0
- package/dist/core/optimized-performance-monitor.js +543 -0
- package/dist/core/optimized-performance-monitor.js.map +1 -0
- package/dist/esm/browser.d.ts +52 -7
- package/dist/esm/browser.js +196 -34
- package/dist/esm/browser.js.map +1 -1
- package/dist/esm/core/index.d.ts +1 -0
- package/dist/esm/core/index.js +1 -0
- package/dist/esm/core/index.js.map +1 -1
- package/dist/esm/core/optimized-performance-monitor.d.ts +227 -0
- package/dist/esm/core/optimized-performance-monitor.js +535 -0
- package/dist/esm/core/optimized-performance-monitor.js.map +1 -0
- package/dist/esm/index.d.ts +7 -8
- package/dist/esm/index.js +18 -19
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/trackers/execution.d.ts +34 -26
- package/dist/esm/trackers/execution.js +99 -60
- package/dist/esm/trackers/execution.js.map +1 -1
- package/dist/esm/trackers/performance.d.ts +7 -21
- package/dist/esm/trackers/performance.js +25 -19
- package/dist/esm/trackers/performance.js.map +1 -1
- package/dist/esm/types/config.d.ts +16 -2
- package/dist/esm/types/index.d.ts +32 -34
- package/dist/esm/types/logger.d.ts +11 -2
- package/dist/esm/utils/colors.js +12 -0
- package/dist/esm/utils/colors.js.map +1 -1
- package/dist/esm/utils/string.d.ts +29 -0
- package/dist/esm/utils/string.js +45 -0
- package/dist/esm/utils/string.js.map +1 -0
- package/dist/index.d.ts +7 -8
- package/dist/index.js +42 -20
- package/dist/index.js.map +1 -1
- package/dist/trackers/execution.d.ts +34 -26
- package/dist/trackers/execution.js +98 -59
- package/dist/trackers/execution.js.map +1 -1
- package/dist/trackers/performance.d.ts +7 -21
- package/dist/trackers/performance.js +25 -19
- package/dist/trackers/performance.js.map +1 -1
- package/dist/types/config.d.ts +16 -2
- package/dist/types/index.d.ts +32 -34
- package/dist/types/logger.d.ts +11 -2
- package/dist/types.d.ts +65 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/colors.js +12 -0
- package/dist/utils/colors.js.map +1 -1
- package/dist/utils/string.d.ts +29 -0
- package/dist/utils/string.js +50 -0
- package/dist/utils/string.js.map +1 -0
- package/package.json +11 -8
|
@@ -1,36 +1,36 @@
|
|
|
1
1
|
import { IExecutionTracker, ITrackOptions } from '../types';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* A record of a function execution
|
|
4
4
|
*/
|
|
5
|
-
interface ExecutionRecord {
|
|
5
|
+
export interface ExecutionRecord {
|
|
6
6
|
name: string;
|
|
7
7
|
duration: number;
|
|
8
|
-
isSlow: boolean;
|
|
9
|
-
memoryUsage?: number;
|
|
10
|
-
level: number;
|
|
11
8
|
startTime: [number, number];
|
|
12
9
|
endTime?: [number, number];
|
|
10
|
+
isSlow: boolean;
|
|
11
|
+
level: number;
|
|
12
|
+
memoryUsage?: number;
|
|
13
|
+
memoryReleased?: number;
|
|
13
14
|
children: ExecutionRecord[];
|
|
14
15
|
parent?: ExecutionRecord;
|
|
15
16
|
}
|
|
16
17
|
/**
|
|
17
|
-
* Execution tracker for
|
|
18
|
+
* Execution tracker for performance monitoring
|
|
18
19
|
*/
|
|
19
20
|
export declare class ExecutionTracker implements IExecutionTracker {
|
|
20
|
-
private _callStack;
|
|
21
21
|
private _executions;
|
|
22
22
|
private _currentExecution;
|
|
23
|
-
private _asciiGenerator;
|
|
24
23
|
private _defaultThreshold;
|
|
24
|
+
private _callStack;
|
|
25
25
|
private _globalScope;
|
|
26
|
+
private _trackedFunctions;
|
|
26
27
|
/**
|
|
27
|
-
*
|
|
28
|
+
* Constructor
|
|
28
29
|
*
|
|
29
|
-
* @param options -
|
|
30
|
+
* @param options - Options for execution tracking
|
|
30
31
|
*/
|
|
31
32
|
constructor(options?: {
|
|
32
33
|
defaultThreshold?: number;
|
|
33
|
-
boxWidth?: number;
|
|
34
34
|
});
|
|
35
35
|
/**
|
|
36
36
|
* Track the execution of a function
|
|
@@ -53,6 +53,19 @@ export declare class ExecutionTracker implements IExecutionTracker {
|
|
|
53
53
|
createTrackable<T extends (...args: any[]) => any>(fn: T, options?: Omit<ITrackOptions, 'label'> & {
|
|
54
54
|
label?: string;
|
|
55
55
|
}): (...args: Parameters<T>) => ReturnType<T>;
|
|
56
|
+
/**
|
|
57
|
+
* Get all execution records
|
|
58
|
+
*
|
|
59
|
+
* @returns A list of execution records
|
|
60
|
+
*/
|
|
61
|
+
getExecutions(): ExecutionRecord[];
|
|
62
|
+
/**
|
|
63
|
+
* Generate a human-friendly memory size string
|
|
64
|
+
*
|
|
65
|
+
* @param bytes - The size in bytes
|
|
66
|
+
* @returns A formatted string
|
|
67
|
+
*/
|
|
68
|
+
formatMemorySize(bytes: number): string;
|
|
56
69
|
/**
|
|
57
70
|
* Get the current call stack
|
|
58
71
|
*
|
|
@@ -66,28 +79,23 @@ export declare class ExecutionTracker implements IExecutionTracker {
|
|
|
66
79
|
*/
|
|
67
80
|
generateFlowChart(): string;
|
|
68
81
|
/**
|
|
69
|
-
*
|
|
82
|
+
* Recursively print an execution tree
|
|
70
83
|
*
|
|
71
|
-
* @param
|
|
72
|
-
* @
|
|
84
|
+
* @param execution - The root execution
|
|
85
|
+
* @param result - The output string
|
|
86
|
+
* @returns The updated result string
|
|
73
87
|
*/
|
|
74
|
-
private
|
|
88
|
+
private printExecutionTree;
|
|
75
89
|
/**
|
|
76
|
-
*
|
|
90
|
+
* Print a single execution with appropriate formatting
|
|
77
91
|
*
|
|
78
|
-
* @param
|
|
79
|
-
* @param result - The result
|
|
92
|
+
* @param execution - The execution to print
|
|
93
|
+
* @param result - The result string to append to
|
|
94
|
+
* @returns The updated result string
|
|
80
95
|
*/
|
|
81
|
-
private
|
|
96
|
+
private printSingleExecution;
|
|
82
97
|
/**
|
|
83
98
|
* Clear all execution records
|
|
84
99
|
*/
|
|
85
100
|
clear(): void;
|
|
86
|
-
/**
|
|
87
|
-
* Get all execution records
|
|
88
|
-
*
|
|
89
|
-
* @returns All execution records
|
|
90
|
-
*/
|
|
91
|
-
getExecutions(): ExecutionRecord[];
|
|
92
101
|
}
|
|
93
|
-
export {};
|
|
@@ -1,21 +1,20 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getFunctionName } from '../utils/stack';
|
|
2
2
|
import { getHighResTime, getDuration } from '../utils/timing';
|
|
3
|
-
import { AsciiArtGenerator } from '../formatters/ascii';
|
|
4
3
|
/**
|
|
5
|
-
* Execution tracker for
|
|
4
|
+
* Execution tracker for performance monitoring
|
|
6
5
|
*/
|
|
7
6
|
export class ExecutionTracker {
|
|
8
7
|
/**
|
|
9
|
-
*
|
|
8
|
+
* Constructor
|
|
10
9
|
*
|
|
11
|
-
* @param options -
|
|
10
|
+
* @param options - Options for execution tracking
|
|
12
11
|
*/
|
|
13
12
|
constructor(options = {}) {
|
|
14
13
|
var _a;
|
|
15
14
|
this._executions = [];
|
|
16
15
|
this._currentExecution = null;
|
|
17
|
-
this._callStack =
|
|
18
|
-
this.
|
|
16
|
+
this._callStack = [];
|
|
17
|
+
this._trackedFunctions = new Map();
|
|
19
18
|
this._defaultThreshold = (_a = options.defaultThreshold) !== null && _a !== void 0 ? _a : 100; // ms
|
|
20
19
|
// Get a reference to the global scope (works in both Node.js and browsers)
|
|
21
20
|
this._globalScope = typeof window !== 'undefined' ? window :
|
|
@@ -33,10 +32,18 @@ export class ExecutionTracker {
|
|
|
33
32
|
var _a, _b, _c;
|
|
34
33
|
const fnName = (options === null || options === void 0 ? void 0 : options.label) || getFunctionName(fn);
|
|
35
34
|
const threshold = (_a = options === null || options === void 0 ? void 0 : options.threshold) !== null && _a !== void 0 ? _a : this._defaultThreshold;
|
|
36
|
-
const includeMemory = (_b = options === null || options === void 0 ? void 0 : options.
|
|
35
|
+
const includeMemory = (_b = options === null || options === void 0 ? void 0 : options.trackMemory) !== null && _b !== void 0 ? _b : true;
|
|
37
36
|
const enableNestedTracking = (_c = options === null || options === void 0 ? void 0 : options.enableNestedTracking) !== null && _c !== void 0 ? _c : true;
|
|
38
37
|
// Get memory usage before execution
|
|
39
|
-
|
|
38
|
+
let startMemory;
|
|
39
|
+
if (includeMemory) {
|
|
40
|
+
try {
|
|
41
|
+
startMemory = process.memoryUsage();
|
|
42
|
+
}
|
|
43
|
+
catch (e) {
|
|
44
|
+
console.warn('Unable to track memory usage:', e);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
40
47
|
// Start timing
|
|
41
48
|
const startTime = getHighResTime();
|
|
42
49
|
// Add to call stack
|
|
@@ -77,7 +84,19 @@ export class ExecutionTracker {
|
|
|
77
84
|
execution.isSlow = execution.duration > threshold;
|
|
78
85
|
// Calculate memory usage
|
|
79
86
|
if (includeMemory && startMemory !== undefined) {
|
|
80
|
-
|
|
87
|
+
try {
|
|
88
|
+
const endMemory = process.memoryUsage();
|
|
89
|
+
// Calculate the memory difference, ensuring it's never negative
|
|
90
|
+
const memoryDiff = endMemory.heapUsed - startMemory.heapUsed;
|
|
91
|
+
execution.memoryUsage = Math.max(0, memoryDiff); // Ensure non-negative value
|
|
92
|
+
// If memory decreased, store a separate field for better visualization
|
|
93
|
+
if (memoryDiff < 0) {
|
|
94
|
+
execution.memoryReleased = Math.abs(memoryDiff);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
catch (e) {
|
|
98
|
+
console.warn('Error calculating memory usage:', e);
|
|
99
|
+
}
|
|
81
100
|
}
|
|
82
101
|
// Restore the previous current execution
|
|
83
102
|
this._currentExecution = previousExecution;
|
|
@@ -96,14 +115,45 @@ export class ExecutionTracker {
|
|
|
96
115
|
* @returns A tracked version of the function
|
|
97
116
|
*/
|
|
98
117
|
createTrackable(fn, options) {
|
|
99
|
-
const self = this;
|
|
100
118
|
const fnName = (options === null || options === void 0 ? void 0 : options.label) || fn.name || 'anonymous';
|
|
101
|
-
|
|
102
|
-
|
|
119
|
+
// Create a tracked version of the function using arrow function to preserve 'this'
|
|
120
|
+
const trackedFn = (...args) => {
|
|
121
|
+
return this.track(() => fn.apply(this, args), {
|
|
103
122
|
...options,
|
|
104
123
|
label: fnName
|
|
105
124
|
});
|
|
106
125
|
};
|
|
126
|
+
// Store the original and tracked function
|
|
127
|
+
this._trackedFunctions.set(fn, trackedFn);
|
|
128
|
+
return trackedFn;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Get all execution records
|
|
132
|
+
*
|
|
133
|
+
* @returns A list of execution records
|
|
134
|
+
*/
|
|
135
|
+
getExecutions() {
|
|
136
|
+
return [...this._executions];
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Generate a human-friendly memory size string
|
|
140
|
+
*
|
|
141
|
+
* @param bytes - The size in bytes
|
|
142
|
+
* @returns A formatted string
|
|
143
|
+
*/
|
|
144
|
+
formatMemorySize(bytes) {
|
|
145
|
+
if (bytes < 1024) {
|
|
146
|
+
return `${bytes.toFixed(2)}B`;
|
|
147
|
+
}
|
|
148
|
+
else if (bytes < 1024 * 1024) {
|
|
149
|
+
return `${(bytes / 1024).toFixed(2)}KB`;
|
|
150
|
+
}
|
|
151
|
+
else if (bytes < 1024 * 1024 * 1024) {
|
|
152
|
+
return `${(bytes / (1024 * 1024)).toFixed(2)}MB`;
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
return `${(bytes / (1024 * 1024 * 1024)).toFixed(2)}GB`;
|
|
156
|
+
}
|
|
107
157
|
}
|
|
108
158
|
/**
|
|
109
159
|
* Get the current call stack
|
|
@@ -111,7 +161,7 @@ export class ExecutionTracker {
|
|
|
111
161
|
* @returns The current call stack
|
|
112
162
|
*/
|
|
113
163
|
getCallStack() {
|
|
114
|
-
return this._callStack
|
|
164
|
+
return [...this._callStack];
|
|
115
165
|
}
|
|
116
166
|
/**
|
|
117
167
|
* Generate a visual representation of the execution flow
|
|
@@ -119,53 +169,50 @@ export class ExecutionTracker {
|
|
|
119
169
|
* @returns ASCII flow chart of the execution
|
|
120
170
|
*/
|
|
121
171
|
generateFlowChart() {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
172
|
+
let result = '';
|
|
173
|
+
// Process each execution
|
|
174
|
+
this._executions.forEach(execution => {
|
|
175
|
+
result = this.printExecutionTree(execution, result);
|
|
176
|
+
});
|
|
177
|
+
return result;
|
|
126
178
|
}
|
|
127
179
|
/**
|
|
128
|
-
*
|
|
180
|
+
* Recursively print an execution tree
|
|
129
181
|
*
|
|
130
|
-
* @param
|
|
131
|
-
* @
|
|
182
|
+
* @param execution - The root execution
|
|
183
|
+
* @param result - The output string
|
|
184
|
+
* @returns The updated result string
|
|
132
185
|
*/
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
result.
|
|
139
|
-
name: execution.name,
|
|
140
|
-
duration: execution.duration,
|
|
141
|
-
isSlow: execution.isSlow,
|
|
142
|
-
memoryUsage: execution.memoryUsage,
|
|
143
|
-
level: execution.level,
|
|
144
|
-
});
|
|
145
|
-
// Add children recursively
|
|
146
|
-
this.addChildrenToResult(execution.children, result);
|
|
186
|
+
printExecutionTree(execution, result) {
|
|
187
|
+
// Print this execution
|
|
188
|
+
result = this.printSingleExecution(execution, result);
|
|
189
|
+
// Print children recursively
|
|
190
|
+
execution.children.forEach(child => {
|
|
191
|
+
result = this.printExecutionTree(child, result);
|
|
147
192
|
});
|
|
148
193
|
return result;
|
|
149
194
|
}
|
|
150
195
|
/**
|
|
151
|
-
*
|
|
196
|
+
* Print a single execution with appropriate formatting
|
|
152
197
|
*
|
|
153
|
-
* @param
|
|
154
|
-
* @param result - The result
|
|
198
|
+
* @param execution - The execution to print
|
|
199
|
+
* @param result - The result string to append to
|
|
200
|
+
* @returns The updated result string
|
|
155
201
|
*/
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
}
|
|
202
|
+
printSingleExecution(execution, result) {
|
|
203
|
+
const indent = ' '.repeat(execution.level);
|
|
204
|
+
const durationStr = execution.duration.toFixed(2);
|
|
205
|
+
const slowMarker = execution.isSlow ? ' [SLOW]' : '';
|
|
206
|
+
let memoryStr = '';
|
|
207
|
+
if (execution.memoryUsage !== undefined) {
|
|
208
|
+
memoryStr = ` [${this.formatMemorySize(execution.memoryUsage)}]`;
|
|
209
|
+
}
|
|
210
|
+
result += `${indent}→ ${execution.name} (${durationStr}ms)${slowMarker}${memoryStr}\n`;
|
|
211
|
+
// Add connector if this execution has children
|
|
212
|
+
if (execution.children.length > 0) {
|
|
213
|
+
result += `${indent} |\n`;
|
|
214
|
+
}
|
|
215
|
+
return result;
|
|
169
216
|
}
|
|
170
217
|
/**
|
|
171
218
|
* Clear all execution records
|
|
@@ -173,15 +220,7 @@ export class ExecutionTracker {
|
|
|
173
220
|
clear() {
|
|
174
221
|
this._executions = [];
|
|
175
222
|
this._currentExecution = null;
|
|
176
|
-
this._callStack
|
|
177
|
-
}
|
|
178
|
-
/**
|
|
179
|
-
* Get all execution records
|
|
180
|
-
*
|
|
181
|
-
* @returns All execution records
|
|
182
|
-
*/
|
|
183
|
-
getExecutions() {
|
|
184
|
-
return [...this._executions];
|
|
223
|
+
this._callStack = [];
|
|
185
224
|
}
|
|
186
225
|
}
|
|
187
226
|
//# sourceMappingURL=execution.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../../../src/trackers/execution.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../../../src/trackers/execution.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,37 +39,23 @@ export declare class PerformanceMonitor implements IPerformanceMonitor {
|
|
|
39
39
|
/**
|
|
40
40
|
* Get memory usage information
|
|
41
41
|
*
|
|
42
|
-
* @returns Memory usage
|
|
42
|
+
* @returns Memory usage object
|
|
43
43
|
*/
|
|
44
44
|
getMemoryUsage(): {
|
|
45
45
|
heapUsed: number;
|
|
46
46
|
heapTotal: number;
|
|
47
47
|
external: number;
|
|
48
48
|
rss: number;
|
|
49
|
-
};
|
|
49
|
+
} | undefined;
|
|
50
50
|
/**
|
|
51
|
-
*
|
|
51
|
+
* Calculate memory difference between current and start memory
|
|
52
52
|
*
|
|
53
|
-
* @param
|
|
54
|
-
* @
|
|
55
|
-
* @returns Memory difference in bytes
|
|
53
|
+
* @param start - Starting memory usage snapshot
|
|
54
|
+
* @returns Memory difference or undefined
|
|
56
55
|
*/
|
|
57
|
-
getMemoryDiff(
|
|
56
|
+
getMemoryDiff(start: {
|
|
58
57
|
heapUsed: number;
|
|
59
|
-
|
|
60
|
-
external: number;
|
|
61
|
-
rss: number;
|
|
62
|
-
}, after: {
|
|
63
|
-
heapUsed: number;
|
|
64
|
-
heapTotal: number;
|
|
65
|
-
external: number;
|
|
66
|
-
rss: number;
|
|
67
|
-
}): {
|
|
68
|
-
heapUsed: number;
|
|
69
|
-
heapTotal: number;
|
|
70
|
-
external: number;
|
|
71
|
-
rss: number;
|
|
72
|
-
};
|
|
58
|
+
}): number;
|
|
73
59
|
/**
|
|
74
60
|
* Generate a suggestion for a bottleneck
|
|
75
61
|
*
|
|
@@ -55,31 +55,37 @@ export class PerformanceMonitor {
|
|
|
55
55
|
/**
|
|
56
56
|
* Get memory usage information
|
|
57
57
|
*
|
|
58
|
-
* @returns Memory usage
|
|
58
|
+
* @returns Memory usage object
|
|
59
59
|
*/
|
|
60
60
|
getMemoryUsage() {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}
|
|
61
|
+
try {
|
|
62
|
+
return process.memoryUsage();
|
|
63
|
+
}
|
|
64
|
+
catch (e) {
|
|
65
|
+
console.warn('Unable to track memory usage:', e);
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
68
|
}
|
|
69
69
|
/**
|
|
70
|
-
*
|
|
70
|
+
* Calculate memory difference between current and start memory
|
|
71
71
|
*
|
|
72
|
-
* @param
|
|
73
|
-
* @
|
|
74
|
-
* @returns Memory difference in bytes
|
|
72
|
+
* @param start - Starting memory usage snapshot
|
|
73
|
+
* @returns Memory difference or undefined
|
|
75
74
|
*/
|
|
76
|
-
getMemoryDiff(
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
75
|
+
getMemoryDiff(start) {
|
|
76
|
+
try {
|
|
77
|
+
const current = this.getMemoryUsage();
|
|
78
|
+
if (!current)
|
|
79
|
+
return 0;
|
|
80
|
+
const diff = current.heapUsed - start.heapUsed;
|
|
81
|
+
// Return zero instead of negative values
|
|
82
|
+
// Negative values usually indicate garbage collection, not actual memory release
|
|
83
|
+
return Math.max(0, diff);
|
|
84
|
+
}
|
|
85
|
+
catch (e) {
|
|
86
|
+
console.warn('Error calculating memory usage:', e);
|
|
87
|
+
return 0;
|
|
88
|
+
}
|
|
83
89
|
}
|
|
84
90
|
/**
|
|
85
91
|
* Generate a suggestion for a bottleneck
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"performance.js","sourceRoot":"","sources":["../../../src/trackers/performance.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAEpC;;GAEG;AACH,MAAM,OAAO,kBAAkB;IAI7B;;;;OAIG;IACH,YAAY,UAAyC,EAAE;;QAR/C,YAAO,GAAkC,IAAI,GAAG,EAAE,CAAC;QASzD,IAAI,CAAC,iBAAiB,GAAG,MAAA,OAAO,CAAC,gBAAgB,mCAAI,GAAG,CAAC,CAAC,KAAK;IACjE,CAAC;IAED;;;;;OAKG;IACI,UAAU,CAAC,KAAa;QAC7B,MAAM,EAAE,GAAG,GAAG,KAAK,IAAI,MAAM,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;QACvC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;;;;OAMG;IACI,QAAQ,CAAC,EAAU;QACxB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAExB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;;OAMG;IACI,YAAY,CAAC,QAAgB,EAAE,SAAkB;QACtD,MAAM,kBAAkB,GAAG,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,IAAI,CAAC,iBAAiB,CAAC;QAC/D,OAAO,QAAQ,GAAG,kBAAkB,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACI,cAAc;QACnB,
|
|
1
|
+
{"version":3,"file":"performance.js","sourceRoot":"","sources":["../../../src/trackers/performance.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAEpC;;GAEG;AACH,MAAM,OAAO,kBAAkB;IAI7B;;;;OAIG;IACH,YAAY,UAAyC,EAAE;;QAR/C,YAAO,GAAkC,IAAI,GAAG,EAAE,CAAC;QASzD,IAAI,CAAC,iBAAiB,GAAG,MAAA,OAAO,CAAC,gBAAgB,mCAAI,GAAG,CAAC,CAAC,KAAK;IACjE,CAAC;IAED;;;;;OAKG;IACI,UAAU,CAAC,KAAa;QAC7B,MAAM,EAAE,GAAG,GAAG,KAAK,IAAI,MAAM,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;QACvC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;;;;OAMG;IACI,QAAQ,CAAC,EAAU;QACxB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAExB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;;OAMG;IACI,YAAY,CAAC,QAAgB,EAAE,SAAkB;QACtD,MAAM,kBAAkB,GAAG,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,IAAI,CAAC,iBAAiB,CAAC;QAC/D,OAAO,QAAQ,GAAG,kBAAkB,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACI,cAAc;QACnB,IAAI,CAAC;YACH,OAAO,OAAO,CAAC,WAAW,EAAE,CAAC;QAC/B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,+BAA+B,EAAE,CAAC,CAAC,CAAC;YACjD,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,aAAa,CAAC,KAA2B;QAC9C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YACtC,IAAI,CAAC,OAAO;gBAAE,OAAO,CAAC,CAAC;YAEvB,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;YAE/C,yCAAyC;YACzC,iFAAiF;YACjF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,iCAAiC,EAAE,CAAC,CAAC,CAAC;YACnD,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACI,kBAAkB,CACvB,YAAoB,EACpB,QAAgB,EAChB,WAAoB;QAEpB,qCAAqC;QACrC,IAAI,WAAW,IAAI,WAAW,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;YAClD,OAAO,2EAA2E,YAAY,EAAE,CAAC;QACnG,CAAC;QAED,IAAI,QAAQ,GAAG,IAAI,EAAE,CAAC;YACpB,OAAO,8DAA8D,YAAY,EAAE,CAAC;QACtF,CAAC;QAED,IAAI,QAAQ,GAAG,GAAG,EAAE,CAAC;YACnB,OAAO,qDAAqD,YAAY,EAAE,CAAC;QAC7E,CAAC;QAED,OAAO,4BAA4B,YAAY,gCAAgC,CAAC;IAClF,CAAC;CACF"}
|
|
@@ -55,9 +55,9 @@ export interface ITrackOptions {
|
|
|
55
55
|
*/
|
|
56
56
|
threshold?: number;
|
|
57
57
|
/**
|
|
58
|
-
* Whether to
|
|
58
|
+
* Whether to track memory usage
|
|
59
59
|
*/
|
|
60
|
-
|
|
60
|
+
trackMemory?: boolean;
|
|
61
61
|
/**
|
|
62
62
|
* Whether to suppress logging for this tracking
|
|
63
63
|
*/
|
|
@@ -71,6 +71,15 @@ export interface ITrackOptions {
|
|
|
71
71
|
* @default true
|
|
72
72
|
*/
|
|
73
73
|
enableNestedTracking?: boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Tracking mode to use for this function
|
|
76
|
+
* Controls the level of detail and performance impact
|
|
77
|
+
*/
|
|
78
|
+
trackingMode?: string;
|
|
79
|
+
/**
|
|
80
|
+
* Any other custom options
|
|
81
|
+
*/
|
|
82
|
+
[key: string]: any;
|
|
74
83
|
}
|
|
75
84
|
/**
|
|
76
85
|
* Logger configuration
|
|
@@ -125,4 +134,9 @@ export interface ILoggerConfig {
|
|
|
125
134
|
* @default [CliFormatter]
|
|
126
135
|
*/
|
|
127
136
|
formatters?: IFormatter[];
|
|
137
|
+
/**
|
|
138
|
+
* Tracking mode to use for performance monitoring
|
|
139
|
+
* Controls the level of detail and performance impact
|
|
140
|
+
*/
|
|
141
|
+
trackingMode?: string;
|
|
128
142
|
}
|
|
@@ -1,44 +1,42 @@
|
|
|
1
1
|
export * from './config';
|
|
2
2
|
export * from './logger';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* Interface for TracePerf configuration
|
|
5
|
+
*/
|
|
6
|
+
export interface ITracePerfConfig {
|
|
7
|
+
/** Tracking mode for balancing performance vs detail */
|
|
8
|
+
trackingMode?: string;
|
|
9
|
+
/** Whether to suppress console output */
|
|
10
|
+
silent?: boolean;
|
|
11
|
+
/** Whether to track memory usage */
|
|
12
|
+
trackMemory?: boolean;
|
|
13
|
+
/** Whether to enable nested function tracking */
|
|
14
|
+
enableNestedTracking?: boolean;
|
|
15
|
+
/** Minimum duration threshold in microseconds */
|
|
16
|
+
threshold?: number;
|
|
17
|
+
/** Sampling rate (0.0-1.0) for reducing overhead */
|
|
18
|
+
sampleRate?: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Interface for tracking options
|
|
5
22
|
*/
|
|
6
23
|
export interface ITrackOptions {
|
|
7
|
-
/**
|
|
8
|
-
* Custom label for the function
|
|
9
|
-
*/
|
|
24
|
+
/** Custom label for the tracked function */
|
|
10
25
|
label?: string;
|
|
11
|
-
/**
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
threshold?: number;
|
|
15
|
-
/**
|
|
16
|
-
* Whether to include memory usage in the tracking
|
|
17
|
-
*/
|
|
18
|
-
includeMemory?: boolean;
|
|
19
|
-
/**
|
|
20
|
-
* Whether to track nested function calls
|
|
21
|
-
*
|
|
22
|
-
* Note: With automatic tracking enabled, TracePerf will attempt to
|
|
23
|
-
* automatically detect and track nested function calls without requiring
|
|
24
|
-
* manual tracking of each function.
|
|
25
|
-
*
|
|
26
|
-
* @default true
|
|
27
|
-
*/
|
|
28
|
-
enableNestedTracking?: boolean;
|
|
29
|
-
/**
|
|
30
|
-
* Whether to automatically track nested function calls
|
|
31
|
-
*
|
|
32
|
-
* When enabled, TracePerf will analyze the function source code to identify
|
|
33
|
-
* potential function calls and automatically track them.
|
|
34
|
-
*
|
|
35
|
-
* @default true
|
|
36
|
-
*/
|
|
37
|
-
autoTracking?: boolean;
|
|
38
|
-
/**
|
|
39
|
-
* Whether to suppress logging
|
|
40
|
-
*/
|
|
26
|
+
/** Override default tracking mode */
|
|
27
|
+
trackingMode?: string;
|
|
28
|
+
/** Override default silent setting */
|
|
41
29
|
silent?: boolean;
|
|
30
|
+
/** Override default memory tracking */
|
|
31
|
+
trackMemory?: boolean;
|
|
32
|
+
/** Override default nested tracking */
|
|
33
|
+
enableNestedTracking?: boolean;
|
|
34
|
+
/** Minimum duration threshold in microseconds */
|
|
35
|
+
threshold?: number;
|
|
36
|
+
/** Sampling rate (0.0-1.0) for reducing overhead */
|
|
37
|
+
sampleRate?: number;
|
|
38
|
+
/** Any other options */
|
|
39
|
+
[key: string]: any;
|
|
42
40
|
}
|
|
43
41
|
/**
|
|
44
42
|
* Interface for execution trackers
|
|
@@ -127,12 +127,21 @@ export interface IPerformanceMonitor {
|
|
|
127
127
|
/**
|
|
128
128
|
* Get memory usage information
|
|
129
129
|
*
|
|
130
|
-
* @returns Memory usage
|
|
130
|
+
* @returns Memory usage object or undefined if not available
|
|
131
131
|
*/
|
|
132
132
|
getMemoryUsage(): {
|
|
133
133
|
heapUsed: number;
|
|
134
134
|
heapTotal: number;
|
|
135
135
|
external: number;
|
|
136
136
|
rss: number;
|
|
137
|
-
};
|
|
137
|
+
} | undefined;
|
|
138
|
+
/**
|
|
139
|
+
* Calculate memory difference between current and start memory
|
|
140
|
+
*
|
|
141
|
+
* @param start - Starting memory usage snapshot
|
|
142
|
+
* @returns Memory difference in bytes
|
|
143
|
+
*/
|
|
144
|
+
getMemoryDiff(start: {
|
|
145
|
+
heapUsed: number;
|
|
146
|
+
}): number;
|
|
138
147
|
}
|