Repository files navigation

TracePerf

Advanced performance tracking and execution monitoring for Node.js applications.

npm versionLicense: MIT

Features

  • High-Performance Execution Monitoring: Track function execution time with minimal overhead
  • Memory Usage Tracking: Monitor memory consumption of your functions and identify memory leaks
  • Flexible Tracking Modes: Choose between performance, balanced, and detailed tracking based on your needs
  • Execution Flow Visualization: Visualize execution flows with intelligent formatting
  • Nested Function Tracking: Track function calls within other functions to understand complex flows
  • Customizable Threshold Detection: Focus on functions that exceed specific execution time thresholds
  • Sampling Control: Adjust sampling rates to minimize performance impact in production
  • Universal Module Compatibility: Works with both CommonJS and ESM environments

Installation

npm install traceperf

Quick Start

consttraceperf=require('traceperf');// Track a synchronous functionconstresult=traceperf.track(()=>{// Your code herereturn'result';},{label: 'myFunction'});// Track an asynchronous functionasyncfunctionmain(){constresult=awaittraceperf.track(async()=>{// Your async code herereturn'async result';},{label: 'asyncFunction'});}

Tracking Modes

TracePerf provides different tracking modes to balance performance with detail:

const{ TrackingMode, createTracePerf }=require('traceperf');// Create a custom instance with performance-focused trackingconstperformanceTracker=createTracePerf({trackingMode: TrackingMode.PERFORMANCE,silent: true,threshold: 100,// only track functions that take more than 100mssampleRate: 0.1// only track 10% of function calls});// Create a custom instance with detailed tracking for developmentconstdevTracker=createTracePerf({trackingMode: TrackingMode.DETAILED,trackMemory: true,enableNestedTracking: true});

Tracking Individual Functions

// Track a single function executionconstresult=traceperf.track(()=>{// Function bodyreturnsomeValue;},{label: 'functionName',threshold: 50,// mstrackMemory: true});// Create a trackable version of an existing functionconstmyFunction=(a,b)=>a+b;consttrackedFunction=traceperf.createTrackable(myFunction,{label: 'addition'});// Now use it normallyconstsum=trackedFunction(5,3);// will be tracked

Tracking Methods in a Module

constuserService={getUser: async(id)=>{/* implementation */},updateUser: async(id,data)=>{/* implementation */},deleteUser: async(id)=>{/* implementation */}};// Register all methods for trackingconsttrackedUserService=traceperf.registerModule(userService);// Now all method calls will be trackedconstuser=awaittrackedUserService.getUser(123);

Advanced Configuration

const{ createTracePerf, TrackingMode }=require('traceperf');constcustomTracker=createTracePerf({// Tracking mode affects detail level and performance impacttrackingMode: TrackingMode.BALANCED,// Enable or disable performance statistics in consolesilent: false,// Track memory usage (slight performance impact)trackMemory: true,// Enable tracking of nested function callsenableNestedTracking: true,// Minimum execution time to track (milliseconds)threshold: 50,// Percentage of function calls to track (0.0 to 1.0)sampleRate: 1.0});

Browser Support

TracePerf provides a fully synchronized browser implementation that matches the Node.js API:

import{createTracePerf,BrowserLogger}from'traceperf/browser';// Create a browser-optimized instanceconstbrowserTracker=createTracePerf({logger: newBrowserLogger({silent: false,trackMemory: true})});// Track function executionbrowserTracker.track(()=>{// Your browser-side code},{label: 'browserOperation'});// Create trackable functionsconsttrackedFn=browserTracker.createTrackable(()=>{// Function implementation},{label: 'trackedBrowserFn'});// Track async operationsawaitbrowserTracker.track(async()=>{constresponse=awaitfetch('/api/data');returnresponse.json();},{label: 'fetchData'});

You can also use it via script tag:

<scriptsrc="dist/traceperf.browser.js"></script><script>const{ createTracePerf, BrowserLogger }=TracePerf;constbrowserTracker=createTracePerf({logger: newBrowserLogger({silent: false,trackMemory: true})});// Use the same API as in Node.jsbrowserTracker.track(()=>{// DOM operations or other browser-side logic},{label: 'domOperation'});</script>

Synchronized Features

TracePerf now provides a consistent API across Node.js and browser environments:

  • Unified Tracking API: The same tracking methods work identically in both environments
  • Consistent Configuration: Logger and tracker options are synchronized
  • Memory Tracking: Both environments support memory usage tracking
  • Performance Optimization: Browser-specific optimizations while maintaining API compatibility
  • Execution Flow: Track complex execution flows consistently across environments

Example of cross-environment usage:

// Node.jsconst{ createTracePerf }=require('traceperf');constnodeTracker=createTracePerf();// Browserimport{createTracePerf}from'traceperf/browser';constbrowserTracker=createTracePerf();// Both environments support the same APIasyncfunctiontrackOperation(tracker){returnawaittracker.track(async()=>{constresult=awaitsomeAsyncOperation();returnprocessResult(result);},{label: 'mainOperation',trackMemory: true});}

Examples

TracePerf includes several example files to help you get started:

  • examples/optimized-tracking-example.js: Demonstrates various ways to use the optimized tracking implementation
  • examples/browser-example.js: Shows how to use TracePerf in browser environments

Tracking an Async Function

const{ createTracePerf }=require('traceperf');consttraceperf=createTracePerf();asyncfunctionfetchData(url){returntraceperf.track(async()=>{constresponse=awaitfetch(url);returnresponse.json();},{label: 'fetchData',trackMemory: true});}

Tracking Nested Functions

const{ createTracePerf }=require('traceperf');consttraceperf=createTracePerf({enableNestedTracking: true});asyncfunctionprocessData(){returnawaittraceperf.track(async()=>{// This function call will be automatically tracked as a childconstdata=awaitfetchData();returntransformData(data);},{label: 'processData'});}asyncfunctionfetchData(){returnawaittraceperf.track(async()=>{// Implementation},{label: 'fetchData'});}functiontransformData(data){returntraceperf.track(()=>{// Implementation},{label: 'transformData'});}

Optimizing for Production

const{ createTracePerf, TrackingMode }=require('traceperf');// Development environmentconstdevTracker=createTracePerf({trackingMode: TrackingMode.DETAILED,silent: false,trackMemory: true,threshold: 0// track everything});// Production environmentconstprodTracker=createTracePerf({trackingMode: TrackingMode.PERFORMANCE,silent: true,// don't log to consoletrackMemory: false,// minimize overheadthreshold: 100,// only track slow functionssampleRate: 0.01// track only 1% of function calls});// Use based on environmentconsttraceperf=process.env.NODE_ENV==='production' ? prodTracker : devTracker;

Browser Usage

To use TracePerf in the browser:

<scriptsrc="dist/traceperf.browser.js"></script><script>const{ createTracePerf, TrackingMode }=TracePerf;constbrowserTracker=createTracePerf({trackingMode: TrackingMode.BALANCED,trackMemory: true});// Now use it to track your functionsbrowserTracker.track(()=>{// DOM operations or other browser-side logic},{label: 'domOperation'});</script>

Or with ES modules:

import{createTracePerf,TrackingMode}from'traceperf/browser';constbrowserTracker=createTracePerf({trackingMode: TrackingMode.BALANCED});// Track a DOM operationbrowserTracker.track(()=>{document.getElementById('output').textContent='Updated';},{label: 'updateDOM'});

Advanced Tracking Features

Tracking with Different Modes

const{ createTracePerf, TrackingMode }=require('traceperf');// Performance mode - minimal overheadconstperformanceTracker=createTracePerf({trackingMode: TrackingMode.PERFORMANCE});// Balanced mode - moderate detail with reasonable overheadconstbalancedTracker=createTracePerf({trackingMode: TrackingMode.BALANCED});// Detailed mode - maximum informationconstdetailedTracker=createTracePerf({trackingMode: TrackingMode.DETAILED});

Using Thresholds to Filter Results

const{ createTracePerf }=require('traceperf');consttracker=createTracePerf();// Only log functions that take more than 50mstracker.track(slowFunction,{threshold: 50});// Different thresholds for different functionstracker.track(criticalFunction,{threshold: 10});// Low threshold for critical pathstracker.track(backgroundTask,{threshold: 200});// Higher threshold for background tasks

About

TracePerf: Advanced console logging & performance tracking for Node.js. Visualize execution flows with ASCII art, detect bottlenecks, and get optimization suggestions. Features structured logs, conditional modes, and memory tracking. Makes debugging faster and more intuitive.

Resources

Contributing

Stars

125 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

TracePerf

Advanced performance tracking and execution monitoring for Node.js applications.

npm versionLicense: MIT

Features

  • High-Performance Execution Monitoring: Track function execution time with minimal overhead
  • Memory Usage Tracking: Monitor memory consumption of your functions and identify memory leaks
  • Flexible Tracking Modes: Choose between performance, balanced, and detailed tracking based on your needs
  • Execution Flow Visualization: Visualize execution flows with intelligent formatting
  • Nested Function Tracking: Track function calls within other functions to understand complex flows
  • Customizable Threshold Detection: Focus on functions that exceed specific execution time thresholds
  • Sampling Control: Adjust sampling rates to minimize performance impact in production
  • Universal Module Compatibility: Works with both CommonJS and ESM environments

Installation

npm install traceperf

Quick Start

consttraceperf=require('traceperf');// Track a synchronous functionconstresult=traceperf.track(()=>{// Your code herereturn'result';},{label: 'myFunction'});// Track an asynchronous functionasyncfunctionmain(){constresult=awaittraceperf.track(async()=>{// Your async code herereturn'async result';},{label: 'asyncFunction'});}

Tracking Modes

TracePerf provides different tracking modes to balance performance with detail:

const{ TrackingMode, createTracePerf }=require('traceperf');// Create a custom instance with performance-focused trackingconstperformanceTracker=createTracePerf({trackingMode: TrackingMode.PERFORMANCE,silent: true,threshold: 100,// only track functions that take more than 100mssampleRate: 0.1// only track 10% of function calls});// Create a custom instance with detailed tracking for developmentconstdevTracker=createTracePerf({trackingMode: TrackingMode.DETAILED,trackMemory: true,enableNestedTracking: true});

Tracking Individual Functions

// Track a single function executionconstresult=traceperf.track(()=>{// Function bodyreturnsomeValue;},{label: 'functionName',threshold: 50,// mstrackMemory: true});// Create a trackable version of an existing functionconstmyFunction=(a,b)=>a+b;consttrackedFunction=traceperf.createTrackable(myFunction,{label: 'addition'});// Now use it normallyconstsum=trackedFunction(5,3);// will be tracked

Tracking Methods in a Module

constuserService={getUser: async(id)=>{/* implementation */},updateUser: async(id,data)=>{/* implementation */},deleteUser: async(id)=>{/* implementation */}};// Register all methods for trackingconsttrackedUserService=traceperf.registerModule(userService);// Now all method calls will be trackedconstuser=awaittrackedUserService.getUser(123);

Advanced Configuration

const{ createTracePerf, TrackingMode }=require('traceperf');constcustomTracker=createTracePerf({// Tracking mode affects detail level and performance impacttrackingMode: TrackingMode.BALANCED,// Enable or disable performance statistics in consolesilent: false,// Track memory usage (slight performance impact)trackMemory: true,// Enable tracking of nested function callsenableNestedTracking: true,// Minimum execution time to track (milliseconds)threshold: 50,// Percentage of function calls to track (0.0 to 1.0)sampleRate: 1.0});

Browser Support

TracePerf provides a fully synchronized browser implementation that matches the Node.js API:

import{createTracePerf,BrowserLogger}from'traceperf/browser';// Create a browser-optimized instanceconstbrowserTracker=createTracePerf({logger: newBrowserLogger({silent: false,trackMemory: true})});// Track function executionbrowserTracker.track(()=>{// Your browser-side code},{label: 'browserOperation'});// Create trackable functionsconsttrackedFn=browserTracker.createTrackable(()=>{// Function implementation},{label: 'trackedBrowserFn'});// Track async operationsawaitbrowserTracker.track(async()=>{constresponse=awaitfetch('/api/data');returnresponse.json();},{label: 'fetchData'});

You can also use it via script tag:

<scriptsrc="dist/traceperf.browser.js"></script><script>const{ createTracePerf, BrowserLogger }=TracePerf;constbrowserTracker=createTracePerf({logger: newBrowserLogger({silent: false,trackMemory: true})});// Use the same API as in Node.jsbrowserTracker.track(()=>{// DOM operations or other browser-side logic},{label: 'domOperation'});</script>

Synchronized Features

TracePerf now provides a consistent API across Node.js and browser environments:

  • Unified Tracking API: The same tracking methods work identically in both environments
  • Consistent Configuration: Logger and tracker options are synchronized
  • Memory Tracking: Both environments support memory usage tracking
  • Performance Optimization: Browser-specific optimizations while maintaining API compatibility
  • Execution Flow: Track complex execution flows consistently across environments

Example of cross-environment usage:

// Node.jsconst{ createTracePerf }=require('traceperf');constnodeTracker=createTracePerf();// Browserimport{createTracePerf}from'traceperf/browser';constbrowserTracker=createTracePerf();// Both environments support the same APIasyncfunctiontrackOperation(tracker){returnawaittracker.track(async()=>{constresult=awaitsomeAsyncOperation();returnprocessResult(result);},{label: 'mainOperation',trackMemory: true});}

Examples

TracePerf includes several example files to help you get started:

  • examples/optimized-tracking-example.js: Demonstrates various ways to use the optimized tracking implementation
  • examples/browser-example.js: Shows how to use TracePerf in browser environments

Tracking an Async Function

const{ createTracePerf }=require('traceperf');consttraceperf=createTracePerf();asyncfunctionfetchData(url){returntraceperf.track(async()=>{constresponse=awaitfetch(url);returnresponse.json();},{label: 'fetchData',trackMemory: true});}

Tracking Nested Functions

const{ createTracePerf }=require('traceperf');consttraceperf=createTracePerf({enableNestedTracking: true});asyncfunctionprocessData(){returnawaittraceperf.track(async()=>{// This function call will be automatically tracked as a childconstdata=awaitfetchData();returntransformData(data);},{label: 'processData'});}asyncfunctionfetchData(){returnawaittraceperf.track(async()=>{// Implementation},{label: 'fetchData'});}functiontransformData(data){returntraceperf.track(()=>{// Implementation},{label: 'transformData'});}

Optimizing for Production

const{ createTracePerf, TrackingMode }=require('traceperf');// Development environmentconstdevTracker=createTracePerf({trackingMode: TrackingMode.DETAILED,silent: false,trackMemory: true,threshold: 0// track everything});// Production environmentconstprodTracker=createTracePerf({trackingMode: TrackingMode.PERFORMANCE,silent: true,// don't log to consoletrackMemory: false,// minimize overheadthreshold: 100,// only track slow functionssampleRate: 0.01// track only 1% of function calls});// Use based on environmentconsttraceperf=process.env.NODE_ENV==='production' ? prodTracker : devTracker;

Browser Usage

To use TracePerf in the browser:

<scriptsrc="dist/traceperf.browser.js"></script><script>const{ createTracePerf, TrackingMode }=TracePerf;constbrowserTracker=createTracePerf({trackingMode: TrackingMode.BALANCED,trackMemory: true});// Now use it to track your functionsbrowserTracker.track(()=>{// DOM operations or other browser-side logic},{label: 'domOperation'});</script>

Or with ES modules:

import{createTracePerf,TrackingMode}from'traceperf/browser';constbrowserTracker=createTracePerf({trackingMode: TrackingMode.BALANCED});// Track a DOM operationbrowserTracker.track(()=>{document.getElementById('output').textContent='Updated';},{label: 'updateDOM'});

Advanced Tracking Features

Tracking with Different Modes

const{ createTracePerf, TrackingMode }=require('traceperf');// Performance mode - minimal overheadconstperformanceTracker=createTracePerf({trackingMode: TrackingMode.PERFORMANCE});// Balanced mode - moderate detail with reasonable overheadconstbalancedTracker=createTracePerf({trackingMode: TrackingMode.BALANCED});// Detailed mode - maximum informationconstdetailedTracker=createTracePerf({trackingMode: TrackingMode.DETAILED});

Using Thresholds to Filter Results

const{ createTracePerf }=require('traceperf');consttracker=createTracePerf();// Only log functions that take more than 50mstracker.track(slowFunction,{threshold: 50});// Different thresholds for different functionstracker.track(criticalFunction,{threshold: 10});// Low threshold for critical pathstracker.track(backgroundTask,{threshold: 200});// Higher threshold for background tasks

About

TracePerf: Advanced console logging & performance tracking for Node.js. Visualize execution flows with ASCII art, detect bottlenecks, and get optimization suggestions. Features structured logs, conditional modes, and memory tracking. Makes debugging faster and more intuitive.

Resources

Contributing

Stars

125 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

TracePerf

Advanced performance tracking and execution monitoring for Node.js applications.

npm versionLicense: MIT

Features

  • High-Performance Execution Monitoring: Track function execution time with minimal overhead
  • Memory Usage Tracking: Monitor memory consumption of your functions and identify memory leaks
  • Flexible Tracking Modes: Choose between performance, balanced, and detailed tracking based on your needs
  • Execution Flow Visualization: Visualize execution flows with intelligent formatting
  • Nested Function Tracking: Track function calls within other functions to understand complex flows
  • Customizable Threshold Detection: Focus on functions that exceed specific execution time thresholds
  • Sampling Control: Adjust sampling rates to minimize performance impact in production
  • Universal Module Compatibility: Works with both CommonJS and ESM environments

Installation

npm install traceperf

Quick Start

consttraceperf=require('traceperf');// Track a synchronous functionconstresult=traceperf.track(()=>{// Your code herereturn'result';},{label: 'myFunction'});// Track an asynchronous functionasyncfunctionmain(){constresult=awaittraceperf.track(async()=>{// Your async code herereturn'async result';},{label: 'asyncFunction'});}

Tracking Modes

TracePerf provides different tracking modes to balance performance with detail:

const{ TrackingMode, createTracePerf }=require('traceperf');// Create a custom instance with performance-focused trackingconstperformanceTracker=createTracePerf({trackingMode: TrackingMode.PERFORMANCE,silent: true,threshold: 100,// only track functions that take more than 100mssampleRate: 0.1// only track 10% of function calls});// Create a custom instance with detailed tracking for developmentconstdevTracker=createTracePerf({trackingMode: TrackingMode.DETAILED,trackMemory: true,enableNestedTracking: true});

Tracking Individual Functions

// Track a single function executionconstresult=traceperf.track(()=>{// Function bodyreturnsomeValue;},{label: 'functionName',threshold: 50,// mstrackMemory: true});// Create a trackable version of an existing functionconstmyFunction=(a,b)=>a+b;consttrackedFunction=traceperf.createTrackable(myFunction,{label: 'addition'});// Now use it normallyconstsum=trackedFunction(5,3);// will be tracked

Tracking Methods in a Module

constuserService={getUser: async(id)=>{/* implementation */},updateUser: async(id,data)=>{/* implementation */},deleteUser: async(id)=>{/* implementation */}};// Register all methods for trackingconsttrackedUserService=traceperf.registerModule(userService);// Now all method calls will be trackedconstuser=awaittrackedUserService.getUser(123);

Advanced Configuration

const{ createTracePerf, TrackingMode }=require('traceperf');constcustomTracker=createTracePerf({// Tracking mode affects detail level and performance impacttrackingMode: TrackingMode.BALANCED,// Enable or disable performance statistics in consolesilent: false,// Track memory usage (slight performance impact)trackMemory: true,// Enable tracking of nested function callsenableNestedTracking: true,// Minimum execution time to track (milliseconds)threshold: 50,// Percentage of function calls to track (0.0 to 1.0)sampleRate: 1.0});

Browser Support

TracePerf provides a fully synchronized browser implementation that matches the Node.js API:

import{createTracePerf,BrowserLogger}from'traceperf/browser';// Create a browser-optimized instanceconstbrowserTracker=createTracePerf({logger: newBrowserLogger({silent: false,trackMemory: true})});// Track function executionbrowserTracker.track(()=>{// Your browser-side code},{label: 'browserOperation'});// Create trackable functionsconsttrackedFn=browserTracker.createTrackable(()=>{// Function implementation},{label: 'trackedBrowserFn'});// Track async operationsawaitbrowserTracker.track(async()=>{constresponse=awaitfetch('/api/data');returnresponse.json();},{label: 'fetchData'});

You can also use it via script tag:

<scriptsrc="dist/traceperf.browser.js"></script><script>const{ createTracePerf, BrowserLogger }=TracePerf;constbrowserTracker=createTracePerf({logger: newBrowserLogger({silent: false,trackMemory: true})});// Use the same API as in Node.jsbrowserTracker.track(()=>{// DOM operations or other browser-side logic},{label: 'domOperation'});</script>

Synchronized Features

TracePerf now provides a consistent API across Node.js and browser environments:

  • Unified Tracking API: The same tracking methods work identically in both environments
  • Consistent Configuration: Logger and tracker options are synchronized
  • Memory Tracking: Both environments support memory usage tracking
  • Performance Optimization: Browser-specific optimizations while maintaining API compatibility
  • Execution Flow: Track complex execution flows consistently across environments

Example of cross-environment usage:

// Node.jsconst{ createTracePerf }=require('traceperf');constnodeTracker=createTracePerf();// Browserimport{createTracePerf}from'traceperf/browser';constbrowserTracker=createTracePerf();// Both environments support the same APIasyncfunctiontrackOperation(tracker){returnawaittracker.track(async()=>{constresult=awaitsomeAsyncOperation();returnprocessResult(result);},{label: 'mainOperation',trackMemory: true});}

Examples

TracePerf includes several example files to help you get started:

  • examples/optimized-tracking-example.js: Demonstrates various ways to use the optimized tracking implementation
  • examples/browser-example.js: Shows how to use TracePerf in browser environments

Tracking an Async Function

const{ createTracePerf }=require('traceperf');consttraceperf=createTracePerf();asyncfunctionfetchData(url){returntraceperf.track(async()=>{constresponse=awaitfetch(url);returnresponse.json();},{label: 'fetchData',trackMemory: true});}

Tracking Nested Functions

const{ createTracePerf }=require('traceperf');consttraceperf=createTracePerf({enableNestedTracking: true});asyncfunctionprocessData(){returnawaittraceperf.track(async()=>{// This function call will be automatically tracked as a childconstdata=awaitfetchData();returntransformData(data);},{label: 'processData'});}asyncfunctionfetchData(){returnawaittraceperf.track(async()=>{// Implementation},{label: 'fetchData'});}functiontransformData(data){returntraceperf.track(()=>{// Implementation},{label: 'transformData'});}

Optimizing for Production

const{ createTracePerf, TrackingMode }=require('traceperf');// Development environmentconstdevTracker=createTracePerf({trackingMode: TrackingMode.DETAILED,silent: false,trackMemory: true,threshold: 0// track everything});// Production environmentconstprodTracker=createTracePerf({trackingMode: TrackingMode.PERFORMANCE,silent: true,// don't log to consoletrackMemory: false,// minimize overheadthreshold: 100,// only track slow functionssampleRate: 0.01// track only 1% of function calls});// Use based on environmentconsttraceperf=process.env.NODE_ENV==='production' ? prodTracker : devTracker;

Browser Usage

To use TracePerf in the browser:

<scriptsrc="dist/traceperf.browser.js"></script><script>const{ createTracePerf, TrackingMode }=TracePerf;constbrowserTracker=createTracePerf({trackingMode: TrackingMode.BALANCED,trackMemory: true});// Now use it to track your functionsbrowserTracker.track(()=>{// DOM operations or other browser-side logic},{label: 'domOperation'});</script>

Or with ES modules:

import{createTracePerf,TrackingMode}from'traceperf/browser';constbrowserTracker=createTracePerf({trackingMode: TrackingMode.BALANCED});// Track a DOM operationbrowserTracker.track(()=>{document.getElementById('output').textContent='Updated';},{label: 'updateDOM'});

Advanced Tracking Features

Tracking with Different Modes

const{ createTracePerf, TrackingMode }=require('traceperf');// Performance mode - minimal overheadconstperformanceTracker=createTracePerf({trackingMode: TrackingMode.PERFORMANCE});// Balanced mode - moderate detail with reasonable overheadconstbalancedTracker=createTracePerf({trackingMode: TrackingMode.BALANCED});// Detailed mode - maximum informationconstdetailedTracker=createTracePerf({trackingMode: TrackingMode.DETAILED});

Using Thresholds to Filter Results

const{ createTracePerf }=require('traceperf');consttracker=createTracePerf();// Only log functions that take more than 50mstracker.track(slowFunction,{threshold: 50});// Different thresholds for different functionstracker.track(criticalFunction,{threshold: 10});// Low threshold for critical pathstracker.track(backgroundTask,{threshold: 200});// Higher threshold for background tasks

About

TracePerf: Advanced console logging & performance tracking for Node.js. Visualize execution flows with ASCII art, detect bottlenecks, and get optimization suggestions. Features structured logs, conditional modes, and memory tracking. Makes debugging faster and more intuitive.

Resources

Contributing

Stars

125 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

TracePerf

Advanced performance tracking and execution monitoring for Node.js applications.

npm versionLicense: MIT

Features

  • High-Performance Execution Monitoring: Track function execution time with minimal overhead
  • Memory Usage Tracking: Monitor memory consumption of your functions and identify memory leaks
  • Flexible Tracking Modes: Choose between performance, balanced, and detailed tracking based on your needs
  • Execution Flow Visualization: Visualize execution flows with intelligent formatting
  • Nested Function Tracking: Track function calls within other functions to understand complex flows
  • Customizable Threshold Detection: Focus on functions that exceed specific execution time thresholds
  • Sampling Control: Adjust sampling rates to minimize performance impact in production
  • Universal Module Compatibility: Works with both CommonJS and ESM environments

Installation

npm install traceperf

Quick Start

consttraceperf=require('traceperf');// Track a synchronous functionconstresult=traceperf.track(()=>{// Your code herereturn'result';},{label: 'myFunction'});// Track an asynchronous functionasyncfunctionmain(){constresult=awaittraceperf.track(async()=>{// Your async code herereturn'async result';},{label: 'asyncFunction'});}

Tracking Modes

TracePerf provides different tracking modes to balance performance with detail:

const{ TrackingMode, createTracePerf }=require('traceperf');// Create a custom instance with performance-focused trackingconstperformanceTracker=createTracePerf({trackingMode: TrackingMode.PERFORMANCE,silent: true,threshold: 100,// only track functions that take more than 100mssampleRate: 0.1// only track 10% of function calls});// Create a custom instance with detailed tracking for developmentconstdevTracker=createTracePerf({trackingMode: TrackingMode.DETAILED,trackMemory: true,enableNestedTracking: true});

Tracking Individual Functions

// Track a single function executionconstresult=traceperf.track(()=>{// Function bodyreturnsomeValue;},{label: 'functionName',threshold: 50,// mstrackMemory: true});// Create a trackable version of an existing functionconstmyFunction=(a,b)=>a+b;consttrackedFunction=traceperf.createTrackable(myFunction,{label: 'addition'});// Now use it normallyconstsum=trackedFunction(5,3);// will be tracked

Tracking Methods in a Module

constuserService={getUser: async(id)=>{/* implementation */},updateUser: async(id,data)=>{/* implementation */},deleteUser: async(id)=>{/* implementation */}};// Register all methods for trackingconsttrackedUserService=traceperf.registerModule(userService);// Now all method calls will be trackedconstuser=awaittrackedUserService.getUser(123);

Advanced Configuration

const{ createTracePerf, TrackingMode }=require('traceperf');constcustomTracker=createTracePerf({// Tracking mode affects detail level and performance impacttrackingMode: TrackingMode.BALANCED,// Enable or disable performance statistics in consolesilent: false,// Track memory usage (slight performance impact)trackMemory: true,// Enable tracking of nested function callsenableNestedTracking: true,// Minimum execution time to track (milliseconds)threshold: 50,// Percentage of function calls to track (0.0 to 1.0)sampleRate: 1.0});

Browser Support

TracePerf provides a fully synchronized browser implementation that matches the Node.js API:

import{createTracePerf,BrowserLogger}from'traceperf/browser';// Create a browser-optimized instanceconstbrowserTracker=createTracePerf({logger: newBrowserLogger({silent: false,trackMemory: true})});// Track function executionbrowserTracker.track(()=>{// Your browser-side code},{label: 'browserOperation'});// Create trackable functionsconsttrackedFn=browserTracker.createTrackable(()=>{// Function implementation},{label: 'trackedBrowserFn'});// Track async operationsawaitbrowserTracker.track(async()=>{constresponse=awaitfetch('/api/data');returnresponse.json();},{label: 'fetchData'});

You can also use it via script tag:

<scriptsrc="dist/traceperf.browser.js"></script><script>const{ createTracePerf, BrowserLogger }=TracePerf;constbrowserTracker=createTracePerf({logger: newBrowserLogger({silent: false,trackMemory: true})});// Use the same API as in Node.jsbrowserTracker.track(()=>{// DOM operations or other browser-side logic},{label: 'domOperation'});</script>

Synchronized Features

TracePerf now provides a consistent API across Node.js and browser environments:

  • Unified Tracking API: The same tracking methods work identically in both environments
  • Consistent Configuration: Logger and tracker options are synchronized
  • Memory Tracking: Both environments support memory usage tracking
  • Performance Optimization: Browser-specific optimizations while maintaining API compatibility
  • Execution Flow: Track complex execution flows consistently across environments

Example of cross-environment usage:

// Node.jsconst{ createTracePerf }=require('traceperf');constnodeTracker=createTracePerf();// Browserimport{createTracePerf}from'traceperf/browser';constbrowserTracker=createTracePerf();// Both environments support the same APIasyncfunctiontrackOperation(tracker){returnawaittracker.track(async()=>{constresult=awaitsomeAsyncOperation();returnprocessResult(result);},{label: 'mainOperation',trackMemory: true});}

Examples

TracePerf includes several example files to help you get started:

  • examples/optimized-tracking-example.js: Demonstrates various ways to use the optimized tracking implementation
  • examples/browser-example.js: Shows how to use TracePerf in browser environments

Tracking an Async Function

const{ createTracePerf }=require('traceperf');consttraceperf=createTracePerf();asyncfunctionfetchData(url){returntraceperf.track(async()=>{constresponse=awaitfetch(url);returnresponse.json();},{label: 'fetchData',trackMemory: true});}

Tracking Nested Functions

const{ createTracePerf }=require('traceperf');consttraceperf=createTracePerf({enableNestedTracking: true});asyncfunctionprocessData(){returnawaittraceperf.track(async()=>{// This function call will be automatically tracked as a childconstdata=awaitfetchData();returntransformData(data);},{label: 'processData'});}asyncfunctionfetchData(){returnawaittraceperf.track(async()=>{// Implementation},{label: 'fetchData'});}functiontransformData(data){returntraceperf.track(()=>{// Implementation},{label: 'transformData'});}

Optimizing for Production

const{ createTracePerf, TrackingMode }=require('traceperf');// Development environmentconstdevTracker=createTracePerf({trackingMode: TrackingMode.DETAILED,silent: false,trackMemory: true,threshold: 0// track everything});// Production environmentconstprodTracker=createTracePerf({trackingMode: TrackingMode.PERFORMANCE,silent: true,// don't log to consoletrackMemory: false,// minimize overheadthreshold: 100,// only track slow functionssampleRate: 0.01// track only 1% of function calls});// Use based on environmentconsttraceperf=process.env.NODE_ENV==='production' ? prodTracker : devTracker;

Browser Usage

To use TracePerf in the browser:

<scriptsrc="dist/traceperf.browser.js"></script><script>const{ createTracePerf, TrackingMode }=TracePerf;constbrowserTracker=createTracePerf({trackingMode: TrackingMode.BALANCED,trackMemory: true});// Now use it to track your functionsbrowserTracker.track(()=>{// DOM operations or other browser-side logic},{label: 'domOperation'});</script>

Or with ES modules:

import{createTracePerf,TrackingMode}from'traceperf/browser';constbrowserTracker=createTracePerf({trackingMode: TrackingMode.BALANCED});// Track a DOM operationbrowserTracker.track(()=>{document.getElementById('output').textContent='Updated';},{label: 'updateDOM'});

Advanced Tracking Features

Tracking with Different Modes

const{ createTracePerf, TrackingMode }=require('traceperf');// Performance mode - minimal overheadconstperformanceTracker=createTracePerf({trackingMode: TrackingMode.PERFORMANCE});// Balanced mode - moderate detail with reasonable overheadconstbalancedTracker=createTracePerf({trackingMode: TrackingMode.BALANCED});// Detailed mode - maximum informationconstdetailedTracker=createTracePerf({trackingMode: TrackingMode.DETAILED});

Using Thresholds to Filter Results

const{ createTracePerf }=require('traceperf');consttracker=createTracePerf();// Only log functions that take more than 50mstracker.track(slowFunction,{threshold: 50});// Different thresholds for different functionstracker.track(criticalFunction,{threshold: 10});// Low threshold for critical pathstracker.track(backgroundTask,{threshold: 200});// Higher threshold for background tasks

About

TracePerf: Advanced console logging & performance tracking for Node.js. Visualize execution flows with ASCII art, detect bottlenecks, and get optimization suggestions. Features structured logs, conditional modes, and memory tracking. Makes debugging faster and more intuitive.

Resources

Contributing

Stars

125 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

TracePerf

Advanced performance tracking and execution monitoring for Node.js applications.

npm versionLicense: MIT

Features

  • High-Performance Execution Monitoring: Track function execution time with minimal overhead
  • Memory Usage Tracking: Monitor memory consumption of your functions and identify memory leaks
  • Flexible Tracking Modes: Choose between performance, balanced, and detailed tracking based on your needs
  • Execution Flow Visualization: Visualize execution flows with intelligent formatting
  • Nested Function Tracking: Track function calls within other functions to understand complex flows
  • Customizable Threshold Detection: Focus on functions that exceed specific execution time thresholds
  • Sampling Control: Adjust sampling rates to minimize performance impact in production
  • Universal Module Compatibility: Works with both CommonJS and ESM environments

Installation

npm install traceperf

Quick Start

consttraceperf=require('traceperf');// Track a synchronous functionconstresult=traceperf.track(()=>{// Your code herereturn'result';},{label: 'myFunction'});// Track an asynchronous functionasyncfunctionmain(){constresult=awaittraceperf.track(async()=>{// Your async code herereturn'async result';},{label: 'asyncFunction'});}

Tracking Modes

TracePerf provides different tracking modes to balance performance with detail:

const{ TrackingMode, createTracePerf }=require('traceperf');// Create a custom instance with performance-focused trackingconstperformanceTracker=createTracePerf({trackingMode: TrackingMode.PERFORMANCE,silent: true,threshold: 100,// only track functions that take more than 100mssampleRate: 0.1// only track 10% of function calls});// Create a custom instance with detailed tracking for developmentconstdevTracker=createTracePerf({trackingMode: TrackingMode.DETAILED,trackMemory: true,enableNestedTracking: true});

Tracking Individual Functions

// Track a single function executionconstresult=traceperf.track(()=>{// Function bodyreturnsomeValue;},{label: 'functionName',threshold: 50,// mstrackMemory: true});// Create a trackable version of an existing functionconstmyFunction=(a,b)=>a+b;consttrackedFunction=traceperf.createTrackable(myFunction,{label: 'addition'});// Now use it normallyconstsum=trackedFunction(5,3);// will be tracked

Tracking Methods in a Module

constuserService={getUser: async(id)=>{/* implementation */},updateUser: async(id,data)=>{/* implementation */},deleteUser: async(id)=>{/* implementation */}};// Register all methods for trackingconsttrackedUserService=traceperf.registerModule(userService);// Now all method calls will be trackedconstuser=awaittrackedUserService.getUser(123);

Advanced Configuration

const{ createTracePerf, TrackingMode }=require('traceperf');constcustomTracker=createTracePerf({// Tracking mode affects detail level and performance impacttrackingMode: TrackingMode.BALANCED,// Enable or disable performance statistics in consolesilent: false,// Track memory usage (slight performance impact)trackMemory: true,// Enable tracking of nested function callsenableNestedTracking: true,// Minimum execution time to track (milliseconds)threshold: 50,// Percentage of function calls to track (0.0 to 1.0)sampleRate: 1.0});

Browser Support

TracePerf provides a fully synchronized browser implementation that matches the Node.js API:

import{createTracePerf,BrowserLogger}from'traceperf/browser';// Create a browser-optimized instanceconstbrowserTracker=createTracePerf({logger: newBrowserLogger({silent: false,trackMemory: true})});// Track function executionbrowserTracker.track(()=>{// Your browser-side code},{label: 'browserOperation'});// Create trackable functionsconsttrackedFn=browserTracker.createTrackable(()=>{// Function implementation},{label: 'trackedBrowserFn'});// Track async operationsawaitbrowserTracker.track(async()=>{constresponse=awaitfetch('/api/data');returnresponse.json();},{label: 'fetchData'});

You can also use it via script tag:

<scriptsrc="dist/traceperf.browser.js"></script><script>const{ createTracePerf, BrowserLogger }=TracePerf;constbrowserTracker=createTracePerf({logger: newBrowserLogger({silent: false,trackMemory: true})});// Use the same API as in Node.jsbrowserTracker.track(()=>{// DOM operations or other browser-side logic},{label: 'domOperation'});</script>

Synchronized Features

TracePerf now provides a consistent API across Node.js and browser environments:

  • Unified Tracking API: The same tracking methods work identically in both environments
  • Consistent Configuration: Logger and tracker options are synchronized
  • Memory Tracking: Both environments support memory usage tracking
  • Performance Optimization: Browser-specific optimizations while maintaining API compatibility
  • Execution Flow: Track complex execution flows consistently across environments

Example of cross-environment usage:

// Node.jsconst{ createTracePerf }=require('traceperf');constnodeTracker=createTracePerf();// Browserimport{createTracePerf}from'traceperf/browser';constbrowserTracker=createTracePerf();// Both environments support the same APIasyncfunctiontrackOperation(tracker){returnawaittracker.track(async()=>{constresult=awaitsomeAsyncOperation();returnprocessResult(result);},{label: 'mainOperation',trackMemory: true});}

Examples

TracePerf includes several example files to help you get started:

  • examples/optimized-tracking-example.js: Demonstrates various ways to use the optimized tracking implementation
  • examples/browser-example.js: Shows how to use TracePerf in browser environments

Tracking an Async Function

const{ createTracePerf }=require('traceperf');consttraceperf=createTracePerf();asyncfunctionfetchData(url){returntraceperf.track(async()=>{constresponse=awaitfetch(url);returnresponse.json();},{label: 'fetchData',trackMemory: true});}

Tracking Nested Functions

const{ createTracePerf }=require('traceperf');consttraceperf=createTracePerf({enableNestedTracking: true});asyncfunctionprocessData(){returnawaittraceperf.track(async()=>{// This function call will be automatically tracked as a childconstdata=awaitfetchData();returntransformData(data);},{label: 'processData'});}asyncfunctionfetchData(){returnawaittraceperf.track(async()=>{// Implementation},{label: 'fetchData'});}functiontransformData(data){returntraceperf.track(()=>{// Implementation},{label: 'transformData'});}

Optimizing for Production

const{ createTracePerf, TrackingMode }=require('traceperf');// Development environmentconstdevTracker=createTracePerf({trackingMode: TrackingMode.DETAILED,silent: false,trackMemory: true,threshold: 0// track everything});// Production environmentconstprodTracker=createTracePerf({trackingMode: TrackingMode.PERFORMANCE,silent: true,// don't log to consoletrackMemory: false,// minimize overheadthreshold: 100,// only track slow functionssampleRate: 0.01// track only 1% of function calls});// Use based on environmentconsttraceperf=process.env.NODE_ENV==='production' ? prodTracker : devTracker;

Browser Usage

To use TracePerf in the browser:

<scriptsrc="dist/traceperf.browser.js"></script><script>const{ createTracePerf, TrackingMode }=TracePerf;constbrowserTracker=createTracePerf({trackingMode: TrackingMode.BALANCED,trackMemory: true});// Now use it to track your functionsbrowserTracker.track(()=>{// DOM operations or other browser-side logic},{label: 'domOperation'});</script>

Or with ES modules:

import{createTracePerf,TrackingMode}from'traceperf/browser';constbrowserTracker=createTracePerf({trackingMode: TrackingMode.BALANCED});// Track a DOM operationbrowserTracker.track(()=>{document.getElementById('output').textContent='Updated';},{label: 'updateDOM'});

Advanced Tracking Features

Tracking with Different Modes

const{ createTracePerf, TrackingMode }=require('traceperf');// Performance mode - minimal overheadconstperformanceTracker=createTracePerf({trackingMode: TrackingMode.PERFORMANCE});// Balanced mode - moderate detail with reasonable overheadconstbalancedTracker=createTracePerf({trackingMode: TrackingMode.BALANCED});// Detailed mode - maximum informationconstdetailedTracker=createTracePerf({trackingMode: TrackingMode.DETAILED});

Using Thresholds to Filter Results

const{ createTracePerf }=require('traceperf');consttracker=createTracePerf();// Only log functions that take more than 50mstracker.track(slowFunction,{threshold: 50});// Different thresholds for different functionstracker.track(criticalFunction,{threshold: 10});// Low threshold for critical pathstracker.track(backgroundTask,{threshold: 200});// Higher threshold for background tasks

About

TracePerf: Advanced console logging & performance tracking for Node.js. Visualize execution flows with ASCII art, detect bottlenecks, and get optimization suggestions. Features structured logs, conditional modes, and memory tracking. Makes debugging faster and more intuitive.

Resources

Contributing

Stars

125 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

TracePerf

Advanced performance tracking and execution monitoring for Node.js applications.

npm versionLicense: MIT

Features

  • High-Performance Execution Monitoring: Track function execution time with minimal overhead
  • Memory Usage Tracking: Monitor memory consumption of your functions and identify memory leaks
  • Flexible Tracking Modes: Choose between performance, balanced, and detailed tracking based on your needs
  • Execution Flow Visualization: Visualize execution flows with intelligent formatting
  • Nested Function Tracking: Track function calls within other functions to understand complex flows
  • Customizable Threshold Detection: Focus on functions that exceed specific execution time thresholds
  • Sampling Control: Adjust sampling rates to minimize performance impact in production
  • Universal Module Compatibility: Works with both CommonJS and ESM environments

Installation

npm install traceperf

Quick Start

consttraceperf=require('traceperf');// Track a synchronous functionconstresult=traceperf.track(()=>{// Your code herereturn'result';},{label: 'myFunction'});// Track an asynchronous functionasyncfunctionmain(){constresult=awaittraceperf.track(async()=>{// Your async code herereturn'async result';},{label: 'asyncFunction'});}

Tracking Modes

TracePerf provides different tracking modes to balance performance with detail:

const{ TrackingMode, createTracePerf }=require('traceperf');// Create a custom instance with performance-focused trackingconstperformanceTracker=createTracePerf({trackingMode: TrackingMode.PERFORMANCE,silent: true,threshold: 100,// only track functions that take more than 100mssampleRate: 0.1// only track 10% of function calls});// Create a custom instance with detailed tracking for developmentconstdevTracker=createTracePerf({trackingMode: TrackingMode.DETAILED,trackMemory: true,enableNestedTracking: true});

Tracking Individual Functions

// Track a single function executionconstresult=traceperf.track(()=>{// Function bodyreturnsomeValue;},{label: 'functionName',threshold: 50,// mstrackMemory: true});// Create a trackable version of an existing functionconstmyFunction=(a,b)=>a+b;consttrackedFunction=traceperf.createTrackable(myFunction,{label: 'addition'});// Now use it normallyconstsum=trackedFunction(5,3);// will be tracked

Tracking Methods in a Module

constuserService={getUser: async(id)=>{/* implementation */},updateUser: async(id,data)=>{/* implementation */},deleteUser: async(id)=>{/* implementation */}};// Register all methods for trackingconsttrackedUserService=traceperf.registerModule(userService);// Now all method calls will be trackedconstuser=awaittrackedUserService.getUser(123);

Advanced Configuration

const{ createTracePerf, TrackingMode }=require('traceperf');constcustomTracker=createTracePerf({// Tracking mode affects detail level and performance impacttrackingMode: TrackingMode.BALANCED,// Enable or disable performance statistics in consolesilent: false,// Track memory usage (slight performance impact)trackMemory: true,// Enable tracking of nested function callsenableNestedTracking: true,// Minimum execution time to track (milliseconds)threshold: 50,// Percentage of function calls to track (0.0 to 1.0)sampleRate: 1.0});

Browser Support

TracePerf provides a fully synchronized browser implementation that matches the Node.js API:

import{createTracePerf,BrowserLogger}from'traceperf/browser';// Create a browser-optimized instanceconstbrowserTracker=createTracePerf({logger: newBrowserLogger({silent: false,trackMemory: true})});// Track function executionbrowserTracker.track(()=>{// Your browser-side code},{label: 'browserOperation'});// Create trackable functionsconsttrackedFn=browserTracker.createTrackable(()=>{// Function implementation},{label: 'trackedBrowserFn'});// Track async operationsawaitbrowserTracker.track(async()=>{constresponse=awaitfetch('/api/data');returnresponse.json();},{label: 'fetchData'});

You can also use it via script tag:

<scriptsrc="dist/traceperf.browser.js"></script><script>const{ createTracePerf, BrowserLogger }=TracePerf;constbrowserTracker=createTracePerf({logger: newBrowserLogger({silent: false,trackMemory: true})});// Use the same API as in Node.jsbrowserTracker.track(()=>{// DOM operations or other browser-side logic},{label: 'domOperation'});</script>

Synchronized Features

TracePerf now provides a consistent API across Node.js and browser environments:

  • Unified Tracking API: The same tracking methods work identically in both environments
  • Consistent Configuration: Logger and tracker options are synchronized
  • Memory Tracking: Both environments support memory usage tracking
  • Performance Optimization: Browser-specific optimizations while maintaining API compatibility
  • Execution Flow: Track complex execution flows consistently across environments

Example of cross-environment usage:

// Node.jsconst{ createTracePerf }=require('traceperf');constnodeTracker=createTracePerf();// Browserimport{createTracePerf}from'traceperf/browser';constbrowserTracker=createTracePerf();// Both environments support the same APIasyncfunctiontrackOperation(tracker){returnawaittracker.track(async()=>{constresult=awaitsomeAsyncOperation();returnprocessResult(result);},{label: 'mainOperation',trackMemory: true});}

Examples

TracePerf includes several example files to help you get started:

  • examples/optimized-tracking-example.js: Demonstrates various ways to use the optimized tracking implementation
  • examples/browser-example.js: Shows how to use TracePerf in browser environments

Tracking an Async Function

const{ createTracePerf }=require('traceperf');consttraceperf=createTracePerf();asyncfunctionfetchData(url){returntraceperf.track(async()=>{constresponse=awaitfetch(url);returnresponse.json();},{label: 'fetchData',trackMemory: true});}

Tracking Nested Functions

const{ createTracePerf }=require('traceperf');consttraceperf=createTracePerf({enableNestedTracking: true});asyncfunctionprocessData(){returnawaittraceperf.track(async()=>{// This function call will be automatically tracked as a childconstdata=awaitfetchData();returntransformData(data);},{label: 'processData'});}asyncfunctionfetchData(){returnawaittraceperf.track(async()=>{// Implementation},{label: 'fetchData'});}functiontransformData(data){returntraceperf.track(()=>{// Implementation},{label: 'transformData'});}

Optimizing for Production

const{ createTracePerf, TrackingMode }=require('traceperf');// Development environmentconstdevTracker=createTracePerf({trackingMode: TrackingMode.DETAILED,silent: false,trackMemory: true,threshold: 0// track everything});// Production environmentconstprodTracker=createTracePerf({trackingMode: TrackingMode.PERFORMANCE,silent: true,// don't log to consoletrackMemory: false,// minimize overheadthreshold: 100,// only track slow functionssampleRate: 0.01// track only 1% of function calls});// Use based on environmentconsttraceperf=process.env.NODE_ENV==='production' ? prodTracker : devTracker;

Browser Usage

To use TracePerf in the browser:

<scriptsrc="dist/traceperf.browser.js"></script><script>const{ createTracePerf, TrackingMode }=TracePerf;constbrowserTracker=createTracePerf({trackingMode: TrackingMode.BALANCED,trackMemory: true});// Now use it to track your functionsbrowserTracker.track(()=>{// DOM operations or other browser-side logic},{label: 'domOperation'});</script>

Or with ES modules:

import{createTracePerf,TrackingMode}from'traceperf/browser';constbrowserTracker=createTracePerf({trackingMode: TrackingMode.BALANCED});// Track a DOM operationbrowserTracker.track(()=>{document.getElementById('output').textContent='Updated';},{label: 'updateDOM'});

Advanced Tracking Features

Tracking with Different Modes

const{ createTracePerf, TrackingMode }=require('traceperf');// Performance mode - minimal overheadconstperformanceTracker=createTracePerf({trackingMode: TrackingMode.PERFORMANCE});// Balanced mode - moderate detail with reasonable overheadconstbalancedTracker=createTracePerf({trackingMode: TrackingMode.BALANCED});// Detailed mode - maximum informationconstdetailedTracker=createTracePerf({trackingMode: TrackingMode.DETAILED});

Using Thresholds to Filter Results

const{ createTracePerf }=require('traceperf');consttracker=createTracePerf();// Only log functions that take more than 50mstracker.track(slowFunction,{threshold: 50});// Different thresholds for different functionstracker.track(criticalFunction,{threshold: 10});// Low threshold for critical pathstracker.track(backgroundTask,{threshold: 200});// Higher threshold for background tasks

About

TracePerf: Advanced console logging & performance tracking for Node.js. Visualize execution flows with ASCII art, detect bottlenecks, and get optimization suggestions. Features structured logs, conditional modes, and memory tracking. Makes debugging faster and more intuitive.

Resources

Contributing

Stars

125 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

TracePerf

Advanced performance tracking and execution monitoring for Node.js applications.

npm versionLicense: MIT

Features

  • High-Performance Execution Monitoring: Track function execution time with minimal overhead
  • Memory Usage Tracking: Monitor memory consumption of your functions and identify memory leaks
  • Flexible Tracking Modes: Choose between performance, balanced, and detailed tracking based on your needs
  • Execution Flow Visualization: Visualize execution flows with intelligent formatting
  • Nested Function Tracking: Track function calls within other functions to understand complex flows
  • Customizable Threshold Detection: Focus on functions that exceed specific execution time thresholds
  • Sampling Control: Adjust sampling rates to minimize performance impact in production
  • Universal Module Compatibility: Works with both CommonJS and ESM environments

Installation

npm install traceperf

Quick Start

consttraceperf=require('traceperf');// Track a synchronous functionconstresult=traceperf.track(()=>{// Your code herereturn'result';},{label: 'myFunction'});// Track an asynchronous functionasyncfunctionmain(){constresult=awaittraceperf.track(async()=>{// Your async code herereturn'async result';},{label: 'asyncFunction'});}

Tracking Modes

TracePerf provides different tracking modes to balance performance with detail:

const{ TrackingMode, createTracePerf }=require('traceperf');// Create a custom instance with performance-focused trackingconstperformanceTracker=createTracePerf({trackingMode: TrackingMode.PERFORMANCE,silent: true,threshold: 100,// only track functions that take more than 100mssampleRate: 0.1// only track 10% of function calls});// Create a custom instance with detailed tracking for developmentconstdevTracker=createTracePerf({trackingMode: TrackingMode.DETAILED,trackMemory: true,enableNestedTracking: true});

Tracking Individual Functions

// Track a single function executionconstresult=traceperf.track(()=>{// Function bodyreturnsomeValue;},{label: 'functionName',threshold: 50,// mstrackMemory: true});// Create a trackable version of an existing functionconstmyFunction=(a,b)=>a+b;consttrackedFunction=traceperf.createTrackable(myFunction,{label: 'addition'});// Now use it normallyconstsum=trackedFunction(5,3);// will be tracked

Tracking Methods in a Module

constuserService={getUser: async(id)=>{/* implementation */},updateUser: async(id,data)=>{/* implementation */},deleteUser: async(id)=>{/* implementation */}};// Register all methods for trackingconsttrackedUserService=traceperf.registerModule(userService);// Now all method calls will be trackedconstuser=awaittrackedUserService.getUser(123);

Advanced Configuration

const{ createTracePerf, TrackingMode }=require('traceperf');constcustomTracker=createTracePerf({// Tracking mode affects detail level and performance impacttrackingMode: TrackingMode.BALANCED,// Enable or disable performance statistics in consolesilent: false,// Track memory usage (slight performance impact)trackMemory: true,// Enable tracking of nested function callsenableNestedTracking: true,// Minimum execution time to track (milliseconds)threshold: 50,// Percentage of function calls to track (0.0 to 1.0)sampleRate: 1.0});

Browser Support

TracePerf provides a fully synchronized browser implementation that matches the Node.js API:

import{createTracePerf,BrowserLogger}from'traceperf/browser';// Create a browser-optimized instanceconstbrowserTracker=createTracePerf({logger: newBrowserLogger({silent: false,trackMemory: true})});// Track function executionbrowserTracker.track(()=>{// Your browser-side code},{label: 'browserOperation'});// Create trackable functionsconsttrackedFn=browserTracker.createTrackable(()=>{// Function implementation},{label: 'trackedBrowserFn'});// Track async operationsawaitbrowserTracker.track(async()=>{constresponse=awaitfetch('/api/data');returnresponse.json();},{label: 'fetchData'});

You can also use it via script tag:

<scriptsrc="dist/traceperf.browser.js"></script><script>const{ createTracePerf, BrowserLogger }=TracePerf;constbrowserTracker=createTracePerf({logger: newBrowserLogger({silent: false,trackMemory: true})});// Use the same API as in Node.jsbrowserTracker.track(()=>{// DOM operations or other browser-side logic},{label: 'domOperation'});</script>

Synchronized Features

TracePerf now provides a consistent API across Node.js and browser environments:

  • Unified Tracking API: The same tracking methods work identically in both environments
  • Consistent Configuration: Logger and tracker options are synchronized
  • Memory Tracking: Both environments support memory usage tracking
  • Performance Optimization: Browser-specific optimizations while maintaining API compatibility
  • Execution Flow: Track complex execution flows consistently across environments

Example of cross-environment usage:

// Node.jsconst{ createTracePerf }=require('traceperf');constnodeTracker=createTracePerf();// Browserimport{createTracePerf}from'traceperf/browser';constbrowserTracker=createTracePerf();// Both environments support the same APIasyncfunctiontrackOperation(tracker){returnawaittracker.track(async()=>{constresult=awaitsomeAsyncOperation();returnprocessResult(result);},{label: 'mainOperation',trackMemory: true});}

Examples

TracePerf includes several example files to help you get started:

  • examples/optimized-tracking-example.js: Demonstrates various ways to use the optimized tracking implementation
  • examples/browser-example.js: Shows how to use TracePerf in browser environments

Tracking an Async Function

const{ createTracePerf }=require('traceperf');consttraceperf=createTracePerf();asyncfunctionfetchData(url){returntraceperf.track(async()=>{constresponse=awaitfetch(url);returnresponse.json();},{label: 'fetchData',trackMemory: true});}

Tracking Nested Functions

const{ createTracePerf }=require('traceperf');consttraceperf=createTracePerf({enableNestedTracking: true});asyncfunctionprocessData(){returnawaittraceperf.track(async()=>{// This function call will be automatically tracked as a childconstdata=awaitfetchData();returntransformData(data);},{label: 'processData'});}asyncfunctionfetchData(){returnawaittraceperf.track(async()=>{// Implementation},{label: 'fetchData'});}functiontransformData(data){returntraceperf.track(()=>{// Implementation},{label: 'transformData'});}

Optimizing for Production

const{ createTracePerf, TrackingMode }=require('traceperf');// Development environmentconstdevTracker=createTracePerf({trackingMode: TrackingMode.DETAILED,silent: false,trackMemory: true,threshold: 0// track everything});// Production environmentconstprodTracker=createTracePerf({trackingMode: TrackingMode.PERFORMANCE,silent: true,// don't log to consoletrackMemory: false,// minimize overheadthreshold: 100,// only track slow functionssampleRate: 0.01// track only 1% of function calls});// Use based on environmentconsttraceperf=process.env.NODE_ENV==='production' ? prodTracker : devTracker;

Browser Usage

To use TracePerf in the browser:

<scriptsrc="dist/traceperf.browser.js"></script><script>const{ createTracePerf, TrackingMode }=TracePerf;constbrowserTracker=createTracePerf({trackingMode: TrackingMode.BALANCED,trackMemory: true});// Now use it to track your functionsbrowserTracker.track(()=>{// DOM operations or other browser-side logic},{label: 'domOperation'});</script>

Or with ES modules:

import{createTracePerf,TrackingMode}from'traceperf/browser';constbrowserTracker=createTracePerf({trackingMode: TrackingMode.BALANCED});// Track a DOM operationbrowserTracker.track(()=>{document.getElementById('output').textContent='Updated';},{label: 'updateDOM'});

Advanced Tracking Features

Tracking with Different Modes

const{ createTracePerf, TrackingMode }=require('traceperf');// Performance mode - minimal overheadconstperformanceTracker=createTracePerf({trackingMode: TrackingMode.PERFORMANCE});// Balanced mode - moderate detail with reasonable overheadconstbalancedTracker=createTracePerf({trackingMode: TrackingMode.BALANCED});// Detailed mode - maximum informationconstdetailedTracker=createTracePerf({trackingMode: TrackingMode.DETAILED});

Using Thresholds to Filter Results

const{ createTracePerf }=require('traceperf');consttracker=createTracePerf();// Only log functions that take more than 50mstracker.track(slowFunction,{threshold: 50});// Different thresholds for different functionstracker.track(criticalFunction,{threshold: 10});// Low threshold for critical pathstracker.track(backgroundTask,{threshold: 200});// Higher threshold for background tasks

About

TracePerf: Advanced console logging & performance tracking for Node.js. Visualize execution flows with ASCII art, detect bottlenecks, and get optimization suggestions. Features structured logs, conditional modes, and memory tracking. Makes debugging faster and more intuitive.

Resources

Contributing

Stars

125 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

TracePerf

Advanced performance tracking and execution monitoring for Node.js applications.

npm versionLicense: MIT

Features

  • High-Performance Execution Monitoring: Track function execution time with minimal overhead
  • Memory Usage Tracking: Monitor memory consumption of your functions and identify memory leaks
  • Flexible Tracking Modes: Choose between performance, balanced, and detailed tracking based on your needs
  • Execution Flow Visualization: Visualize execution flows with intelligent formatting
  • Nested Function Tracking: Track function calls within other functions to understand complex flows
  • Customizable Threshold Detection: Focus on functions that exceed specific execution time thresholds
  • Sampling Control: Adjust sampling rates to minimize performance impact in production
  • Universal Module Compatibility: Works with both CommonJS and ESM environments

Installation

npm install traceperf

Quick Start

consttraceperf=require('traceperf');// Track a synchronous functionconstresult=traceperf.track(()=>{// Your code herereturn'result';},{label: 'myFunction'});// Track an asynchronous functionasyncfunctionmain(){constresult=awaittraceperf.track(async()=>{// Your async code herereturn'async result';},{label: 'asyncFunction'});}

Tracking Modes

TracePerf provides different tracking modes to balance performance with detail:

const{ TrackingMode, createTracePerf }=require('traceperf');// Create a custom instance with performance-focused trackingconstperformanceTracker=createTracePerf({trackingMode: TrackingMode.PERFORMANCE,silent: true,threshold: 100,// only track functions that take more than 100mssampleRate: 0.1// only track 10% of function calls});// Create a custom instance with detailed tracking for developmentconstdevTracker=createTracePerf({trackingMode: TrackingMode.DETAILED,trackMemory: true,enableNestedTracking: true});

Tracking Individual Functions

// Track a single function executionconstresult=traceperf.track(()=>{// Function bodyreturnsomeValue;},{label: 'functionName',threshold: 50,// mstrackMemory: true});// Create a trackable version of an existing functionconstmyFunction=(a,b)=>a+b;consttrackedFunction=traceperf.createTrackable(myFunction,{label: 'addition'});// Now use it normallyconstsum=trackedFunction(5,3);// will be tracked

Tracking Methods in a Module

constuserService={getUser: async(id)=>{/* implementation */},updateUser: async(id,data)=>{/* implementation */},deleteUser: async(id)=>{/* implementation */}};// Register all methods for trackingconsttrackedUserService=traceperf.registerModule(userService);// Now all method calls will be trackedconstuser=awaittrackedUserService.getUser(123);

Advanced Configuration

const{ createTracePerf, TrackingMode }=require('traceperf');constcustomTracker=createTracePerf({// Tracking mode affects detail level and performance impacttrackingMode: TrackingMode.BALANCED,// Enable or disable performance statistics in consolesilent: false,// Track memory usage (slight performance impact)trackMemory: true,// Enable tracking of nested function callsenableNestedTracking: true,// Minimum execution time to track (milliseconds)threshold: 50,// Percentage of function calls to track (0.0 to 1.0)sampleRate: 1.0});

Browser Support

TracePerf provides a fully synchronized browser implementation that matches the Node.js API:

import{createTracePerf,BrowserLogger}from'traceperf/browser';// Create a browser-optimized instanceconstbrowserTracker=createTracePerf({logger: newBrowserLogger({silent: false,trackMemory: true})});// Track function executionbrowserTracker.track(()=>{// Your browser-side code},{label: 'browserOperation'});// Create trackable functionsconsttrackedFn=browserTracker.createTrackable(()=>{// Function implementation},{label: 'trackedBrowserFn'});// Track async operationsawaitbrowserTracker.track(async()=>{constresponse=awaitfetch('/api/data');returnresponse.json();},{label: 'fetchData'});

You can also use it via script tag:

<scriptsrc="dist/traceperf.browser.js"></script><script>const{ createTracePerf, BrowserLogger }=TracePerf;constbrowserTracker=createTracePerf({logger: newBrowserLogger({silent: false,trackMemory: true})});// Use the same API as in Node.jsbrowserTracker.track(()=>{// DOM operations or other browser-side logic},{label: 'domOperation'});</script>

Synchronized Features

TracePerf now provides a consistent API across Node.js and browser environments:

  • Unified Tracking API: The same tracking methods work identically in both environments
  • Consistent Configuration: Logger and tracker options are synchronized
  • Memory Tracking: Both environments support memory usage tracking
  • Performance Optimization: Browser-specific optimizations while maintaining API compatibility
  • Execution Flow: Track complex execution flows consistently across environments

Example of cross-environment usage:

// Node.jsconst{ createTracePerf }=require('traceperf');constnodeTracker=createTracePerf();// Browserimport{createTracePerf}from'traceperf/browser';constbrowserTracker=createTracePerf();// Both environments support the same APIasyncfunctiontrackOperation(tracker){returnawaittracker.track(async()=>{constresult=awaitsomeAsyncOperation();returnprocessResult(result);},{label: 'mainOperation',trackMemory: true});}

Examples

TracePerf includes several example files to help you get started:

  • examples/optimized-tracking-example.js: Demonstrates various ways to use the optimized tracking implementation
  • examples/browser-example.js: Shows how to use TracePerf in browser environments

Tracking an Async Function

const{ createTracePerf }=require('traceperf');consttraceperf=createTracePerf();asyncfunctionfetchData(url){returntraceperf.track(async()=>{constresponse=awaitfetch(url);returnresponse.json();},{label: 'fetchData',trackMemory: true});}

Tracking Nested Functions

const{ createTracePerf }=require('traceperf');consttraceperf=createTracePerf({enableNestedTracking: true});asyncfunctionprocessData(){returnawaittraceperf.track(async()=>{// This function call will be automatically tracked as a childconstdata=awaitfetchData();returntransformData(data);},{label: 'processData'});}asyncfunctionfetchData(){returnawaittraceperf.track(async()=>{// Implementation},{label: 'fetchData'});}functiontransformData(data){returntraceperf.track(()=>{// Implementation},{label: 'transformData'});}

Optimizing for Production

const{ createTracePerf, TrackingMode }=require('traceperf');// Development environmentconstdevTracker=createTracePerf({trackingMode: TrackingMode.DETAILED,silent: false,trackMemory: true,threshold: 0// track everything});// Production environmentconstprodTracker=createTracePerf({trackingMode: TrackingMode.PERFORMANCE,silent: true,// don't log to consoletrackMemory: false,// minimize overheadthreshold: 100,// only track slow functionssampleRate: 0.01// track only 1% of function calls});// Use based on environmentconsttraceperf=process.env.NODE_ENV==='production' ? prodTracker : devTracker;

Browser Usage

To use TracePerf in the browser:

<scriptsrc="dist/traceperf.browser.js"></script><script>const{ createTracePerf, TrackingMode }=TracePerf;constbrowserTracker=createTracePerf({trackingMode: TrackingMode.BALANCED,trackMemory: true});// Now use it to track your functionsbrowserTracker.track(()=>{// DOM operations or other browser-side logic},{label: 'domOperation'});</script>

Or with ES modules:

import{createTracePerf,TrackingMode}from'traceperf/browser';constbrowserTracker=createTracePerf({trackingMode: TrackingMode.BALANCED});// Track a DOM operationbrowserTracker.track(()=>{document.getElementById('output').textContent='Updated';},{label: 'updateDOM'});

Advanced Tracking Features

Tracking with Different Modes

const{ createTracePerf, TrackingMode }=require('traceperf');// Performance mode - minimal overheadconstperformanceTracker=createTracePerf({trackingMode: TrackingMode.PERFORMANCE});// Balanced mode - moderate detail with reasonable overheadconstbalancedTracker=createTracePerf({trackingMode: TrackingMode.BALANCED});// Detailed mode - maximum informationconstdetailedTracker=createTracePerf({trackingMode: TrackingMode.DETAILED});

Using Thresholds to Filter Results

const{ createTracePerf }=require('traceperf');consttracker=createTracePerf();// Only log functions that take more than 50mstracker.track(slowFunction,{threshold: 50});// Different thresholds for different functionstracker.track(criticalFunction,{threshold: 10});// Low threshold for critical pathstracker.track(backgroundTask,{threshold: 200});// Higher threshold for background tasks

About

TracePerf: Advanced console logging & performance tracking for Node.js. Visualize execution flows with ASCII art, detect bottlenecks, and get optimization suggestions. Features structured logs, conditional modes, and memory tracking. Makes debugging faster and more intuitive.

Resources

Contributing

Stars

125 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages