How to measure time taken by function to execute Javascript
In this blog post, JavaScript offers ways to calculate measure (elapsed) time taken by a function execution in JavaScript and NodeJS.
Sometimes, we need to know function execution time while profiling a JavaScript application to improve performance.
It helps the developer to pinpoint the problem method for the time taken.
Time elapse taken in JavaScript. Measure time in NodeJS.
How to measure time taken for function execution using console object
Console object is an inbuilt JavaScript object useful for getting debugging information during development.
We have to two below methods to measure the time time() method initializing timer task timeEnd() method stop timer task.
These two methods have a string argument that contains the timer task name. Configure multiple timer tasks using console objects to print the information.
Example code:
start = console.time("callAPITimer");
callAPI();
console.timeEnd("callAPITimer");
function callAPI() {
for (i = 0, i < 10; i++; ) {
$.ajax({
url: "my-json-server.typicode.com/user/repo/posts/1",
success: function () {
console.log("success");
},
error: function (err) {
console.log("error", err);
},
});
}
}
Time taken for function execution using performance
performance is an object which provides performance-related metrics of a page in a browser and server-side, It has now()🔗 method to return the current timestamp in milliseconds.
performance🔗 instance can be used on client JavaScript and server-side NodeJS applications.
Syntax:
performance.now() //22.584999998798594
Time elapsed on the client web page
on the Client side, We can use the script tag to calculate the time taken for the function execution
In the function - process, REST API is called 10 times using ajax. Taken the time before function call and after call return time taken by subtracting from the first call to second call
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Time taken</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<script>
start = performance.now();
processIt();
end = performance.now();
timeTaken = end - start;
console.log("time elapsed", timeTaken);
function processIt() {
for (i = 0, i < 10; i++; ) {
$.ajax({
url: "my-json-server.typicode.com/user/repo/posts/1",
success: function () {
console.log("success");
},
error: function (err) {
console.log("error", err);
},
});
}
}
</script>
</head>
<body></body>
</html>
And output you see in the console.
time elapsed 0.11499998799990863
if you use a performance object on the Server-side in the NodeJS application, you will see the following error Fixing ReferenceError: performance is not defined
Let us see how we can use performance in the Nodejs application and solve the above error.
find time measured in Nodejs
performance instance is available in perf_hooks module since the 8.6 version
first import perf_hooks into NodeJS code using object destructing feature
const { performance } = require("perf_hooks");
or;
const performance = require("perf_hooks").performance;
Complete example in Nodejs:
const { performance } = require("perf_hooks");
const start = performance.now();
processIt();
const end = performance.now();
let timeElapsed = end - start;
console.log("time taken", timeElapsed); // 3.158299997448921
Conclusion
To summarize,
This post covers the time taken by function execution in javascript. using console
end timeEnd
,Performance
now function in perf_hooks
in nodejs