Background
Forcing synchronous execution in NodeJS some times increases execution time of the function, because you want to ensure certain order of progress in the code.
There are many good reads into the subject. TL DR: In my opinion you can reduce the amount of code quite drastically in particular select cases by introducing synchronous behavior into your code.
Timing functions
Generally you can measure functions execution time setTimeOut() and using dates for calculation. There are also many wrapper solutions for much more fine grained measurements/telemetry etc.
Since PowerShell is my default console for VScode I tend to use native functions of Powershell often to speed up some things – And this is where the Measure-Command function comes into play

Non blocking function
Blocking function
//Non Blocking function
const req = require('request-promises')
var uris =[
"https://uri1.com",
"https://uri2.com",
"https://uri3.com",
"https://uri4.com"
]
function LoopAsync (uris) {
for (let index = 0; index < uris.length; index++) {
const element = uris[index];
req(element).then((result) => {
console.log(element + ".>" + result.headers.server)
})
}
}
LoopAsync(uris)
//Blocking function
const req = require('request-promises')
var uris =[
"https://uri1.com",
"https://uri2.com",
"https://uri3.com",
"https://uri4.com"
]
async function LoopAsyncAwait (uris) {
for (let index = 0; index < uris.length; index++) {
const element = uris[index];
const data = await req(element)
console.log(element + ".>" + data.headers.server)
}
}
LoopAsyncAwait(uris)

Example for VScode
Measure-Command {node .\AsyncLoop.js} Measure-Command {node .\syncLoop.js}

0 comments on “Measuring Node Execution In VSCode with PowerShell”