Javascript:如何测量函数执行的时间

1,859 阅读1分钟

在这篇博文中,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