2016-04-12 77 views
7

Sto provando Angular 2 e ho notato che le prestazioni su Internet Explorer 11 sono drammaticamente lente durante il ciclo con * ngPer oltre 1500 elementi. Ci vogliono circa 25 secondi con IE11 mentre meno di 1 secondo sugli altri browser.Angular 2 performance IE11 * ngPer

Pausa del debugger Ho notato che il codice chiama costantemente isNan in es6-shim.js. Qui lo stack di chiamate:

enter image description here

Un plnkr di lavoro qui: http://plnkr.co/edit/sEujClHmuCbrydIiYQYL?p=preview. Il codice è molto semplice:

<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); 

Chiunque con lo stesso problema? Qualche soluzione o suggerimento per migliorare le prestazioni?

Grazie in anticipo.

+0

Non so se questo è davvero la causa delle scarse prestazioni, ma altri browser non hanno bisogno di 'es6-shim'. – zeroflagL

+0

forse non c'è soluzione perché IE11 non ha un'implementazione nativa ed es6-shim è l'unico modo per far funzionare il framework anche con scarse prestazioni – Lelezeus

+0

Assicurarsi di avere abilitato 'prodMode' quando si esegue il test delle prestazioni. –

risposta

6

Il problema è che IE non ha un'implementazione nativa di Map. I set e get funzioni del polyfill sono estremamente lento (rispetto alle loro controparti native) e prendere la maggior parte del tempo:

enter image description here

Forse - e si spera - altri polyfills per Map sono più veloci di es6-shim.

Aggiornamento:

ho testato il codice con core-js e le sue prestazioni sembra essere molto più vicino a quello della implementazione nativa.

+2

Avete un collegamento a quel plunker? Sono curioso su quale sottoinsieme di 'core-js' hai usato e se hai una raccomandazione su quel punteggio. – Ward

+0

IE11 ha il supporto di base per 'Map' e' Set' built-in. Il polyfill li sostituisce con la sua implementazione. Ho [riparato es6-shim] (https://github.com/paulmillr/es6-shim/pull/429) per migliorare le sue prestazioni. –