@bemoje/profiler
v3.0.0
Published
Performance profiling utilities for measuring execution time of functions, class methods, and modules.
Downloads
572
Maintainers
Readme
@bemoje/profiler
Performance profiling utilities for measuring execution time of functions, class methods, and modules.
Exports
- Profiler: A utility class for profiling functions, classes, and modules to measure execution time and other performance metrics.
Installation
npm install @bemoje/profilerUsage
Profile a Standalone Function
import { Profiler } from '@bemoje/profiler'
const add = Profiler.fn('add', (a: number, b: number) => a + b)
add(1, 2) // 3
add(3, 4) // 7
Profiler.printResults()
// Execution time (microseconds) calls total avg min max
// add() 2 5 2 2 3Profile a Class
import { Profiler } from '@bemoje/profiler'
@Profiler.class
class Calculator {
add(a: number, b: number) {
return a + b
}
multiply(a: number, b: number) {
return a * b
}
}
// Or without decorators:
Profiler.class(Calculator)
// All methods are now profiled (prototype + static)
const calc = new Calculator()
calc.add(1, 2)
calc.multiply(3, 4)
Profiler.printResults()Profile a Module
import { Profiler } from '@bemoje/profiler'
import * as mathUtils from './mathUtils'
Profiler.module(mathUtils, 'mathUtils')
mathUtils.sum([1, 2, 3])
mathUtils.average([1, 2, 3])
Profiler.printResults()
// Execution time (microseconds) calls total avg min max
// mathUtils.sum() 1 12 12 12 12
// mathUtils.average() 1 8 8 8 8Options and Control
import { Profiler } from '@bemoje/profiler'
// Disable profiling globally (wraps become no-ops)
Profiler.enabled = false
// Ignore specific keys when profiling a class
Profiler.class(MyClass, { ignoreStaticKeys: ['create'], ignorePrototypeKeys: ['toString'] })
// Sort results by total time
Profiler.printResults({ sortBy: 'totalTimeUs' })
// Get raw results as data
const results = Profiler.getResults({ sortBy: 'calls' })
// [['methodName', { calls, totalTimeUs, avgTimeUs, minTimeUs, maxTimeUs }], ...]