2014-09-24 99 views
0

我目前正在使用第三方指令,并且我想花时间在屏幕上呈现某些内容。定时需要多长时间呈现角度

console.time('time'); 
    tableservice.setColumns(columns); 
    var dataView = new DataView(); 
    dataView.setItems(datarows); 
    $scope.columns = tableservice.getColumns(); 
    $scope.dataView = dataView; 
    console.timeEnd('time'); 

这是我为提供模型而生成的代码,以便它可以显示在视图上。

我想花时间多久,并看到console.time方法变化太多,时间是可怕的。

有时我会得到0.000ms和1.000ms,这根本就不是很好。

对我来说,测试一下在视图上渲染某些东西需要多长时间的最佳方式是什么?

编辑:

我已经尝试了很多的方法,时间,他们似乎都跳来跳去太多,所以我假定时间不是很准确。

有没有更好的方法来测试模型渲染到屏幕上需要多长时间?

+1

你可以看看到[Batarang(https://chrome.google.com/webstore/detail/angularjs-batarang/ighdmehidhipcmcojjgiloacoafjmpfk ?hl = en)too :) – 2014-09-24 22:24:23

+1

渲染发生在你离开“Angular execution context”之后,请参阅https://docs.angularjs.org/guide/scope#integration-with-the-browser-event-loop因此,我认为你只是测量JavaScript代码的执行情况,而不是渲染。 – 2014-09-25 00:26:45

+0

我不知道你尝试了哪种计时方法,但是你试过[用户计时API](http://www.w3.org/TR/user-timing/)(使用'mark(...)'和'measure(...)'?[尚未完全支持](http://caniuse.com/#feat=user-timing),但我会试一试...... – 2014-09-25 00:34:35

回答

0

如果你想要比这更精确的东西,你可以使用new Date().getTime()获得以微秒为单位的时间。

此外,performance.now()似乎适用于此,它也更加准确。看到它一个很好的答案在这里:https://stackoverflow.com/a/21120901/965907

所以:

var startTime = new Date().getTime(); 
    tableservice.setColumns(columns); 
    var dataView = new DataView(); 
    dataView.setItems(datarows); 
    $scope.columns = tableservice.getColumns(); 
    $scope.dataView = dataView; 
    console.log(new Date().getTime() - startTime);