使用Javascript动态创建表格,不同的方法,巨大的运行时间差异!

    技术2022-05-20  42

    来是想测试一下使用Javascript生成一个比较大的表格,大概需要多长时间,一直认为这会是一个比较固定的时间。期间用了几种不同的方法,发现效率相差太大了。下面是测试的具体说明:

    目标:生成一个2000*5的表格,每个单元格的内容是行号+逗号+列号

    方法一:使用createElement生成表格,使用insertRow和insertCell方法生成行列,单元格的内容使用innerHTML属性进行填充。

    方法二:使用createElement生成表格,使用CreateElement方法生成行列,单元格的内容使用了createTextNode方法填充。

    方法三:拼接表格innerHTML属性的字符串,使用字符串 += 操作符链接字符串

    方法四:拼接表格innerHTML属性的字符串,各个字符串追加数组里面,最后调用数组的join方法生成目标字符串。

    运行时间比较:

    方法运行时间(ms)方法一93037方法二3341方法三2795方法四500

    具体的程序如下:

    <html>   <head>    <title>test page</title>    <script type='text/javascript'>      <!--    function createTable() {        var t = document.createElement('table');        for (var i = 0; i < 2000; i++) {         var r = t.insertRow(0);         for (var j = 0; j < 5; j++) {          var c = r.insertCell(0);          c.innerHTML = i + ',' + j;         }        }                document.getElementById('table1').appendChild(t);       t.setAttribute('border', '1');    }        function createTable2() {        var t = document.createElement('table');        var b = document.createElement('tbody');        for (var i = 0; i < 2000; i++) {         var r = document.createElement('tr');         for (var j = 0; j < 5; j++) {          var c = document.createElement('td');          var m = document.createTextNode(i + ',' + j);          c.appendChild(m);          r.appendChild(c);         }         b.appendChild(r);        }                t.appendChild(b);        document.getElementById('table1').appendChild(t);       t.setAttribute('border', '1');    }        function createTable3() {     var data = '';          data += '<table border=1><tbody>';        for (var i = 0; i < 2000; i++) {         data += '<tr>';         for (var j = 0; j < 5; j++) {          data += '<td>' + i + ',' + j + '</td>';         }         data += '</tr>';        }        data += '</tbody><table>';                document.getElementById('table1').innerHTML = data;    }

       function createTable4() {    var data = new Array();        data.push('<table border=1><tbody>');       for (var i = 0; i < 2000; i++) {        data.push('<tr>');        for (var j = 0; j < 5; j++) {         data.push('<td>' + i + ',' + j + '</td>');        }        data.push('</tr>');       }       data.push('</tbody><table>');              document.getElementById('table1').innerHTML = data.join('');   }

       function showFunctionRunTime(f) {    var t1 = new Date();    f();    var t2 = new Date();    alert(t2 - t1);   }     //-->   </script>  </head> <body>  <div id="table1" style="border: 1px solid black">  </div>

      <script>   showFunctionRunTime(createTable);   showFunctionRunTime(createTable2);   showFunctionRunTime(createTable3);   showFunctionRunTime(createTable4);  </script> </body></html>


    最新回复(0)