¿La directiva ngFor vuelve a representar toda la matriz en cada mutación?

Digamos que tenemos una variedad de artículos:

items = [
    { title: 'item 1'},
    { title: 'item 2'},
    /* ... */
];

Y hay una plantilla que representa esta matriz:

<ul>
    <li *ngFor="let item of items">{{item.title}}</li>
</ul>

Wll angular2 rerenderá toda la matriz si agrego / elimino elementos a través depush/splice o solo agregará / eliminará el marcado de los elementos correspondientes? Si solo actualiza, entonces, ¿hay alguna diferencia en las estrategias de mutación? ¿Debería preferir la inserción / empalme en lugar del reemplazo de la matriz? En otras palabras, ¿son estos dos enfoques equivalentes en términos de rendimiento de representación:

/* 1: mutation */
this.items.push({ title: 'New Item' });

/* 2: replacement */
var newArray = this.items.slice();
newArray.push({ title: 'New Item' });

this.items = newArray;

Respuestas a la pregunta(2)

Su respuesta a la pregunta