2016-04-12 36 views
7

私は角度2を試していますが、Internet Explorer 11でのパフォーマンスは、* ngForで1,500アイテムを超えると劇的に遅くなることに気付きました。 IE11では約25秒かかりますが、他のブラウザでは1秒以下です。角度2のパフォーマンスIE11 * ngFor

デバッガを一時停止するコードが常にisNanがes6-shim.jsで機能することがわかりました。ここで コールスタック:

enter image description here

ここで働いplnkr:http://plnkr.co/edit/sEujClHmuCbrydIiYQYL?p=preview。 コードは非常に簡単です:

<ul *ngFor="#item of items"> 
    <li>Item: {{item.itemKey}}</li> 
</ul> 

//Load items simulating remote load 
setTimeout(function(){ 
    for (let i = 0; i < 1500; i++) { 
      self.items.push(new Item(i+"")); 
     } 
},1000); 

同じ問題で誰ですか?パフォーマンスを向上させるための回避策やヒント

ありがとうございます。

+0

パフォーマンスが悪いのが本当に原因かどうかは分かりませんが、他のブラウザでは「es6-shim」は必要ありません。 – zeroflagL

+0

IE11にネイティブ実装がなく、パフォーマンスが悪い場合でもフレームワークを動作させる唯一の方法は、es6-shimです。 – Lelezeus

+0

パフォーマンスをテストするときに 'prodMode'を有効にしてください。 –

答えて

6

IEにはMapのネイティブ実装がないという問題があります。ポリフィルのsetget機能は、(そのネイティブの対応物と比較して)非常に遅く、ほとんどの時間を取る:

enter image description here

たぶん

- またはうまくいけば - Mapのための他のpolyfillsはes6-shimよりも高速です。

更新:

私はcore-jsであなたのコードをテストしているし、その性能は、ネイティブ実装のそれに非常に近いと思われます。

+2

そのプランナーへのリンクがありますか?私はあなたが使った 'core-js 'のサブセットと、あなたがそのスコアについての勧告を持っているかどうか不思議です。 – Ward

+0

IE11は 'Map'と' Set'組み込み関数を基本的にサポートしています。ポリフィルは、それらを独自の実装に置き換えます。パフォーマンスを向上させるために[patched es6-shim](https://github.com/paulmillr/es6-shim/pull/429)しました。 –