Tengo un escenario como este:
Hay una aplicación de cliente NodeJS que llama a un servicio API. Luego, el cliente sube a un oyente para obtener una respuesta.
Ahora necesito medir el tiempo de respuesta desde que se llama a la API hasta que el cliente recibe el evento.
Finalmente, quiero hacer pruebas de rendimiento para ello.
//1) call API //2) rise listener context.events.myEvent().on('data', async event => { console.log("result"); //3) here needs to measure Response time });Por favor, ayúdame a resolverlo.
Puede usar console.time() y console.timeEnd()
Llame a console.time() cuando desee iniciar el temporizador y a console.timeEnd() para detener e imprimir el tiempo transcurrido.
//1) call API console.time("response time") //2) rise listener context.events.myEvent().on('data', async event => { //3) here needs to measure Response time console.timeEnd("response time") });documentación: consola.tiempo , consola.tiempoEnd
Si lo necesita en forma de variable, debe obtener manualmente las marcas de tiempo y calcularlo
//1) call API let start = new Date().getTime() //2) rise listener context.events.myEvent().on('data', async event => { let end = new Date().getTime() //3) here needs to measure Response time let elapsedTime = end - start; });Para cualquiera que desee obtener el valor del tiempo transcurrido en lugar de la salida de la consola:
useprocess.hrtime() , a continuación se muestra mi enfoque más simple:
context.events.myEvent().on('data', async event => { var startTime = process.hrtime(); var elapsedSeconds = parseHrtimeToSeconds(process.hrtime(startTime)); console.log('It takes ' + elapsedSeconds + 'seconds'); }); function parseHrtimeToSeconds(hrtime) { var seconds = (hrtime[0] + (hrtime[1] / 1e9)).toFixed(3); return seconds; }