Skip to content

Implement performance profiling and trace file generation #1197

Description

@BioPhoton

Implementation Plan

Utils

Profiler

Usage

  • setup -
  • cli (primary-dark) -
  • core (primary) -
  • utils,models (primary-light) -
  • plugins -

Image

The goal is to enable Browser functionality in the NodeJS environment, specifically the Extensibility API used for Performance profiling.

Example - NodeJS code:

// Mark used to represent the start of the image processing task// The start time is defaulted to nowconstimageProcessinTimeStart=performance.now();// ... later in your code// Track entry representing the completion of image processing// with additional details and a tooltip// The start time is a marker from earlier// The end time is defaulted to nowperformance.measure('Image Processing Complete',{start: imageProcessinTimeStart,detail: {devtools: {dataType: 'track-entry',track: 'Image Processing Tasks',trackGroup: 'My Tracks',// Group related tracks togethercolor: 'tertiary-dark',properties: [['Filter Type','Gaussian Blur'],['Resize Dimensions','500x300'],],tooltipText: 'Image processed successfully',},},});

Example Traces

ImageImageImageImageImageImageImageImage

Usage

constprofiler=newProfiler({outputPath: 'trace-output.json',spans: {analysis: {track: 'Analysis',group: 'Tools',color: 'primary'},io: {track: 'I/O',group: 'Tools',color: 'secondary'},},});consttaskLoadConfig=profiler.mark('start-loadConfig',{detail: profiler.spans.io({properties: [['Config File','code-pushup.config.json']],}),});profiler.measure('run-loadConfig',taskLoadConfig);
# Profile Code PushUp CLI
CP_PROFILING=true npm @code-pushup/cli
# Or Profile with Code PushUp NxPlugin
nx run @code-pushup/nx-plugin:cli --profiling --profiling-output=trace.json
# Both write the trace to the file system

References

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions