In the simple example below, Knockout calls HTMLElement.appendChild 18 times to render the template. It doesn't use DocumentFragment , so each of these 18 operations are made on the live DOM causing reflows. Ideally, there should be only one call to appendChild on the live DOM.

This really hurts performance, does anyone know how to reduce the damage?

JS BIN with the code.

JavaScript

var viewModel = { people:[ {name: 'Tim'}, {name: 'John'}, {name: 'Greg'} ] }; ko.applyBindings(viewModel, document.getElementById('list1'));

HTML