Unlike regular timestamps created with
Date.now()
, a high resolution timestamp is precise to a thousandth of a millisecond. Having this level of precision can be very useful when testing code that needs to run really fast. For those that work in environments that demand lightning fast code execution, this new level of accuracy is incredibly useful. To generate a high resolution timestamp, you need to use the now
method that is available on the performance
object.Please note that whileDate.now()
returns the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC,performance.now()
returns the number of milliseconds, with microseconds in the fractional part, fromperformance.timing.navigationStart()
, the start of navigation of the document, to theperformance.now()
call.
How to use performance.now() ?
You need to create a variable before and after the piece of code you wish to test, and populate those variables with the value returned by
performance.now()
. Subtracting the first variable from the second variable will then give you the amount of time that your code took to execute.The code below shows a simple example of how to do this. I am calling a server-side controller action from a client-side controller of a Lightning component. Before adding the server-side controller action to the queue of actions to be executed, I have declared
startTime
variable, populating with the value returned by performance.now()
. After the server-side action is completed, I am checking the amount of time the code took to execute.callServer: function (component, method, params, helper, callback) {
var action = component.get(method);
if (params) {
action.setParams(params);
}
action.setCallback(this, function (response) {
console.log('Time taken:', (performance.now() - startTime));
var state = response.getState();
if (state === "SUCCESS") {
callback.call(this, response.getReturnValue());
} else if (state === "ERROR") {
console.log(response.getError());
}
});
var startTime = performance.now();
$A.enqueueAction(action);
}