有没有一种方法可以检查javascript以毫秒为单位执行一个函数需要多长时间
Is there a way I can check how long it takes for javascript to execute a function in milliseconds?
我有如下代码:
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/
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 我可以在json对象中添加一个函数吗
- Javascript使函数一个接一个地执行
- 是JavaScript中的函数一个对象
- 两个几乎相等的jQuery函数;一个适用于IE,一个不适用于IE
- 两个Javascript函数一个window.onload=Custom.init;和一个window.onload=f
- 使javascript加载函数一个接一个地执行
- 如何通过两个嵌套的匿名函数(一个带有超时的事件处理程序)传递变量
- 为什么我不能让两个jQuery函数一个在另一个里面呢?
- 给函数一个变量名,而不是它的值
- 如何使用嵌入函数(一个滚动页由Pete - peachananr)
- 是否有可能给JavaScript函数一个类型/类?
- 确保两个函数一个接一个地执行,其中第一个函数内部有一个异步调用
- 两个不同的ajax函数一个接一个调用返回相同的值
- jQuery第一次更改函数一个工作
- 给这个函数一个id
- 如何给回调函数一个值一个变量在特定时刻
- 使用回调使两个函数一个接一个地运行
- 两个函数(一个用php)是否可以用“;onclick”;
- 两个几乎相同的函数.一个函数用Queue进行排队.Jquery效果在queued函数上不起作用.为什么