我试图弄清楚摘要周期运行所需的时间,所以我写了这样的话:
mPulseApp.run(['$rootScope', function ($rootScope) {
var d = new Date();
var $digest = $rootScope.$digest;
var $newDigest = function () {
var time = d.getTime();
$digest.apply(this, arguments);
console.log('time:' + (d.getTime() - time));
}
$rootScope.$digest = $newDigest;
}]);
然而,这会运行时间始终相同,就好像$ digest.apply方法正在运行async一样。请注意,当我测试时,我会在一个非常繁重的页面上,并且应该注意一些时间。
我该如何做到这一点?
答案 0 :(得分:1)
试试这个:
mPulseApp.run(['$rootScope', function ($rootScope) {
var $digest = $rootScope.$digest;
var $newDigest = function () {
var time1 = new Date().getTime();
$digest.apply(this, arguments);
var time2 = new Date().getTime();
console.log('time:' + (time2 - time1));
}
$rootScope.$digest = $newDigest;
}]);
答案 1 :(得分:1)
存储日期/时间时
var d = new Date();
您已将d设置为等于执行该行的日期/时间。调用d.getTime()会返回该对象的时间组件,因此您可以保留该对象一小时,d.getTime()将返回相同的结果。您可以在浏览器的控制台中测试此行为。
如果您正在使用Chrome,请尝试使用performance.now()方法获取可用于计算性能的高精度时间戳。例如:
PulseApp.run(['$rootScope', function ($rootScope) {
var $digest = $rootScope.$digest;
var $newDigest = function () {
var d = performance.now();
$digest.apply(this, arguments);
console.log('time:' + (performance.now() - d) + ' ms');
}
$rootScope.$digest = $newDigest;
}]);
减去两个performance.now()调用会以毫秒为单位给出执行时间。有关performance.now()
的更多信息,请参阅https://developer.mozilla.org/en-US/docs/Web/API/Performance.now()