&gt;2 We could throw out the entire list and rebuild it in one go, but re-rendering large amounts of DOM is also slow.<p>Out of curiosity I tried swapping &quot;&lt;ul&gt;&lt;li&gt;Artichokes&lt;&#x2F;li&gt;&lt;li&gt;Broccoli&lt;&#x2F;li&gt;&lt;li&gt;Cabbage&lt;&#x2F;li&gt;&lt;li&gt;Dill&lt;&#x2F;li&gt;&lt;li&gt;Eggplant&lt;&#x2F;li&gt;&lt;&#x2F;ul&gt;&quot;<p>and the same without the broccoli and dill, back and forth a few thousand times using jquery.<p>The average time per change was 28 nanoseconds or 35000 changes per second (Chrome, MacBook Air). Trying swapping a list of 300 fruits for a list of 500 fruits was 1.4 milliseconds per change.<p>I wonder if using some convoluted framework to &quot;solve—or at least mitigate&quot; this might be premature optimisation? (As well as actually slower).