我有这样一个场景:
有一个调用API服务的NodeJS客户端应用。然后客户端启动一个侦听器来获得响应。
现在我需要测量从API被调用到客户端接收到事件的响应时间。
最后,我想为它做性能测试。
//1) call API
//2) rise listener
context.events.myEvent().on('data', async event => {
console.log("result");
//3) here needs to measure Response time
});
请帮我解决这个问题。
您可以使用console.time()
和console.timeEnd()
当您想启动定时器时,调用console.time()
,console.timeEnd()
停止并打印经过的时间。
//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")
});
文档:控制台。时间,console.timeEnd
如果你需要变量的形式,你必须手动获取时间戳并计算它
//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;
});
对于任何想要获得时间流逝值而不是控制台输出的人:
使用process.hrtime(),下面是我的简单方法:
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;
}