Rangeオブジェクトの速度に対するちょっとしたテスト
同じ個所に複数のノードを追加する場合でも、
なぜかRangeオブジェクトで範囲とって一気に追加するよりもinsertBefore
メソッドの方が全体的に速かったみたいです。
内部的な処理は少ないと思うんだけどなぁ…。
なんか悲しい。
var doc = document; var hoge = doc.getElementById("hoge"); function func1(){ var df = doc.createDocumentFragment(); var start = new Date(); for (var i=0; i<100000; i++) { df.insertBefore(hoge.cloneNode(true), (df.firstChild || null)); } console.log(new Date()-start); } function func2(){ var df = doc.createDocumentFragment(); var range = doc.createRange(); var start = new Date(); range.selectNodeContents(df); for (var i=0; i<100000; i++) { range.insertNode(hoge.cloneNode(true)); } console.log(new Date()-start); }
IE9 | Firefox12 | Chrome18 | |
---|---|---|---|
func1 | 6011ms | 2390ms | 119ms |
func2 | 5896ms | 2570ms | 142ms |