js动态创建table表格的四种方法和性能测试(转载)
来源:https://blog.51cto.com/jeoff/225188
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | 使用Javascript动态创建表格,不同的方法,巨大的运行时间差异! 本来是想测试一下使用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(); for ( var j = 0; j < 5; j++) { var c = r.insertCell(); 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> |
树立目标,保持活力,gogogo!
分类:
转载
标签:
JavaScript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2020-01-14 js 解压缩 和压缩工具