有没有一种方法可以检查javascript以毫秒为单位执行一个函数需要多长时间

Is there a way I can check how long it takes for javascript to execute a function in milliseconds?

本文关键字:函数 一个 执行 长时间 为单位 javascript 方法 一种 检查 有没有      更新时间:2023-09-26

我有如下代码:

oTable = $('#dataTable').dataTable({
    "sScrollX": "100%",
    "bScrollCollapse": true,
    iDisplayLength: -1,
    aLengthMenu: [[-1, 25, 50, 200, "All"], [10, 25, 50, 200, "All"]],
    aoColumnDefs: [
        { "sSortDataType":"dom-data-rk", "aTargets": ["sort-data-rk"] },
        { "sType": "date-uk", "aTargets": ["sort-date-uk"] },
        { "sType": "datetime-uk", "aTargets": ["sort-datetime-uk"] }
    ]
});

有没有一种方法可以计算使用javascript或jQuery执行此代码所需的时间。类似于C#中的Stopwatch方法?

您可以使用控制台时间并验证它需要多长时间。

console.time('profile');
for ( var i=0; i < 100000; i++) {
   var arr = new Array();
}
var time = console.timeEnd('profile');

可变时间的结果以毫秒为单位示例:http://jsfiddle.net/dadviegas/dV9rf/

适用于所有浏览器

var one=new Date();
for ( var i=0; i < 100000; i++) {
  var arr = new Array();
}
var two=new Date();
//Calculate difference btw the two dates
alert(two.getMilliseconds()-one.getMilliseconds());

我在jsfiddle 中添加了这个解决方案

试试这个:

var start = new Date();
var startTime = start.getTime();
// do whatever you want, your code
var end = new Date();
var endTime= end.getTime();
var timeTaken = end - start;
alert('Execution time is : ' + timeTaken);

是否存在日期对象

var t = new Date;
//some processing here

console.log( new Date - t ); 

对于IE,您需要使用类似于的东西

 var start = new Date().getTime();
    oTable = $('#dataTable').dataTable({
     "sScrollX": "100%",
     "bScrollCollapse": true,
     iDisplayLength: -1,
     aLengthMenu: [[-1, 25, 50, 200, "All"], [10, 25, 50, 200, "All"]],
     aoColumnDefs: [
        { "sSortDataType":"dom-data-rk", "aTargets": ["sort-data-rk"] },
        { "sType": "date-uk", "aTargets": ["sort-date-uk"] },
        { "sType": "datetime-uk", "aTargets": ["sort-datetime-uk"] }
     ]
    });
    var end = new Date().getTime();
    var time = end - start;
    alert('Execution time: ' + time);

下面是C#Stopwatch的关键功能的实现。它使用了新的performance.now()函数,该函数比getTime()函数更准确。

var Stopwatch = function () {
    var startTime;
    var hasPerformance = window.performance && window.performance.webkitNow;
    return {
        start: function () {
            startTime = hasPerformance ? window.performance.webkitNow() : new Date().getTime();
        },
        end: function () {
            this.elapsed = (hasPerformance ? window.performance.webkitNow() : new Date().getTime()) - startTime;
        },
        elapsed: 0
    };
}

用法:

var myStopwatch = Stopwatch();
myStopwatch.start();
/* code you want to time goes here */
myStopwatch.end()
alert("It took " + stopwatch.elapsed + " milliseconds!");

内置的JS计时器根本不能提供良好的准确性。

我喜欢dynatrace AJAX版本。这是一个IE插件,提供了非常好的时间安排。

http://ejohn.org/blog/deep-tracing-of-internet-explorer/