angularjs - 一次性绑定在“ng-repeat”中没有任何性能提升

时间:2017-05-05 01:35:31

标签: javascript angularjs performance

要以ng-repeat而不是2路方式提高速度,我已改为单向绑定以提高速度。但我根本没有找到任何速度性能。任何人都可以帮我提高ng-repeat的速度吗?

我的进程显示没有大的变化,当我在2之间以单向ng-repeats

进行随机播放时
VM780 script.js:30 Process time: 124 //single way
VM780 script.js:30 Process time: 132 //double way
VM780 script.js:30 Process time: 120 //single way
VM780 script.js:30 Process time: 121 // double way
VM780 script.js:30 Process time: 124 // single way

这是我使用的ng-repeat

<div class="showList"> 
      <ul>
        <li ng-repeat="d in data">{{::d.name}}{{::d.address}}{{::d.city}}{{::d.country}}</li> 
        <!-- <li ng-repeat="d in data">{{d.name}}{{d.address}}{{d.city}}{{d.country}}</li> -->
      </ul>
    </div> 

Live Demo

1 个答案:

答案 0 :(得分:2)

这里的问题是对性能改进的错误期望。该脚本不会从这些优化中获益。它每次都会生成一组新数据。

同样,测试性能的方法也是错误的,它只是衡量生成一组新数据并为其做初始摘要所花费的时间 - 每次都是相同的。

一次性绑定在后续摘要期间对相同的数据集有益。

衡量这种情况的方法类似于

  setInterval(function () {
    console.time('digest');
    $scope.$apply();
    console.timeEnd('digest');
  }, 1000)

这样

<li ng-repeat="d in data">{{::d.name}}{{::d.address}}{{::d.city}}{{::d.country}}</li>

将显示一些性能改进

<li ng-repeat="d in data">{{d.name}}{{d.address}}{{d.city}}{{d.country}}</li>

当观察者数量变得更高时,它变得至关重要。