@searchspring/snap-profiler
v0.63.0
Published
Snap Profiler
Downloads
1,151
Readme
Snap Profiler
A utility for recording how long something takes to complete. Profiler
is used in finding API response, component rendering and Middleware execution times.
Dependency
Snap Profiler is a dependency of @searchspring/snap-controller
Installation
npm install --save @searchspring/snap-profiler
Import
import { Profiler } from '@searchspring/snap-profiler';
import { Profiler } from '@searchspring/snap-profiler';
const profiler = new Profiler('namespace');
setNamespace
method
Programatically set the namespace after construction.
import { Profiler } from '@searchspring/snap-profiler';
const profiler = new Profiler();
profiler.setNamespace('namespace');
create
method
Create a new profile.
import { Profiler } from '@searchspring/snap-profiler';
const profiler = new Profiler();
const searchProfile = profiler.create({
type: 'event',
name: 'search',
context: params
}: ProfileDetails);
type ProfileDetails<T> = {
type: string;
name: string;
context: T;
}
Returns an instance of Profile
.
Profile
is not an exported member of the Snap Profiler package. It is only returned in the Profiler create
method.
start
method
This will start the profiler timer.
searchProfile.start();
stop
method
This will stop the profiler timer.
searchProfile.stop();
namespace
property
Profile namespace that was set using the Profiler
constructor or the setNamespace
method.
console.log(`namespace: ${searchProfile.namespace}`);
type
property
Profile type that was set in the create
method ProfileDetails
parameters.
console.log(`type: ${searchProfile.type}`);
name
property
Profile name that was set in the create
method ProfileDetails
parameters.
console.log(`name: ${searchProfile.name}`);
context
property
Profile context that was set in the create
method ProfileDetails
parameters. The context is used to provide additional details regarding the profile. A search profile would likely contain the request parameters amoung other things.
console.log(`context: ${searchProfile.context}`);
status
property
Profile status. The default value is pending
.
The value will change to started
when the start
method is invoked and to finished
when the stop
method is invoked.
console.log(`context: ${searchProfile.status}`);
time
property
Profile time object is of type ProfileTime
:
type ProfileTime = {
date: number;
begin: number;
end: number;
run: number;
};
ProfileTime.date
- set to Date.now()
when start
method is invoked.
ProfileTime.begin
- set to window.performance.now()
when start
method is invoked.
ProfileTime.end
- set to window.performance.now()
when stop
method is invoked.
ProfileTime.run
- set to the total running time in milliseconds between when the start
and stop
methods have been invoked.
Logging profiles
It is recommended to using the Snap Logger's profile
method to log Snap Profiles as it provides a clean output for easy parsing.