在这篇博文中,JavaScript提供了在JavaScript和NodeJS中计算函数执行的测量(耗时)时间的方法。
有时,我们需要知道函数的执行时间,同时对JavaScript应用程序进行性能分析。
这将非常有用,可以准确地指出所花时间的问题方法。
在JavaScript中花费的时间 在NodeJS中测量时间。
Console对象是内置的JavaScript对象,在开发过程中用于获取调试信息。
我们必须使用以下两个方法来测量时间**time()方法初始化定时器任务timeEnd()**方法停止定时器任务。
这两个方法有一个字符串参数,可以作为定时器任务的名称。这在使用控制台对象配置多个定时器任务时非常有用。
示例代码:
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);
}
});
}
}
performance是一个在浏览器和服务器端提供页面性能相关指标的对象,它有now()方法来返回当前的时间戳,单位是毫秒。
性能实例可以在客户端的JavaScript和服务器端的NodeJS应用程序中使用。
语法
performance.now() //22.584999998798594
在客户端,我们可以使用脚本标签来计算函数执行的时间。
在函数-processIt中,REST API被使用ajax调用了10次。用第一次调用的时间减去第二次调用的时间,计算出函数调用前和调用后的返回时间。
<!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>
你在控制台中看到的输出
time elapsed 0.11499998799990863
如果你在服务器端(即NodeJS应用程序)使用性能对象,你会看到以下错误Fixing ReferenceError: performance is not defined
让我们看看如何在Nodejs应用程序中使用性能并解决上述错误
从8.6版本开始,perf_hooks模块中就有performance实例。
首先将perf_hooks导入NodeJS代码中,使用对象析构功能
const {performance} = require('perf_hooks');
or
const performance= require('perf_hooks').performance;
在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