IE6のエンジンでSleipnrが重い件

Sleipnir(たぶんIE6のエンジン)で
あるJavaScriptを使ったページが重いから修正してって
依頼を受けた。

本音はIE8入れれば早くなるんじゃねぇのと思うのだが
そんなこともいえずに実装しました

以前のソース
for (k = 0; k < cols; k++) {
	html += '<h3>' + year + '<\/h3>';
	html += '<table id="revTbl' + l + '" class="revTbl">';
	html += '<thead>';
	html += '<tr>';
	html += '<th><span>公開日<\/span><\/th>';
	html += '<th><span>名前(R URL)<\/span><\/th>';
	html += '<th><span>コード<\/span><\/th>';
	html += '<th><span>URL<\/span><\/th>';
	html += '<th><span>備考<\/span><\/th>';
	html += '<\/tr>';
	html += '<\/thead>';
	html += '<tbody>';
}
document.write(html);

抜粋して書くとhtmlをfor文で回しながら+=を使って
代入していくスクリプトなのだがie系(特にie6,7)では
この+=という代入行為が重いらしい。

そこで一度すべて配列にpushして最後にjoinする方法で実装

for (k = 0; k < cols; k++) {
	joinData.push('<h3>' + year + '<\/h3>');
	joinData.push('<table id="revTbl' + l + '" class="revTbl">');
	joinData.push('<thead>');
	joinData.push('<tr>');
	joinData.push('<th><span>公開日<\/span><\/th>');
	joinData.push('<th><span>名前(R URL)<\/span><\/th>');
	joinData.push('<th><span>コード<\/span><\/th>');
	joinData.push('<th><span>URL<\/span><\/th>');
	joinData.push('<th><span>備考<\/span><\/th>');
	joinData.push('<\/tr>');
	joinData.push('<\/thead>');
	joinData.push('<tbody>');
}
document.write(joinData.join(''));

これだと今まで10秒くらいかかってたものが
8秒くらいになったらしい(ビミョー)
まだ満足してないようなのでもう少し
高速化を図らないと駄目そうです


ついでに配列をJSONで実装してみたけど、
速度が変わらない+配列の入力項目が増えるといわれて
却下されました><