javascript - 渲染到表中的 1,000 行速度很慢

标签 javascript jquery node.js electron

有没有办法更快地更新屏幕?我正在向表中写入 1000 行,但似乎 Electron、WebKit 或其他东西渲染速度不够快。一旦数据被告知写入,它需要几秒钟的时间才能显示在屏幕上。

我不确定是我的代码还是 electro/node/webkit 导致速度变慢。也许是 jquery 慢?

这就是我正在做的事情:

var tbody = $('#results-table-data>tbody');

for (var i = 0; i < rows.length; i++) {
    var item = rows[i];
    var row = $('<tr>');
    for (var j = 0; j < fields.length; j++) {
        var field = fields[j].name;
        var value = item[field] === null ? '(null)' : item[field];
        row.append('<td class="data-' + getTypeClass(columnTypes[j], item[field]) + '">' + value + '</td>');
    }
    tbody.append(row);
}

最佳答案

嵌套的 for 循环效率不是很高,但有时是必要的。为了稍微加快速度,您可以做的一件事是缓存长度和数组访问器: 对于 1000 条记录来说,这不会是一个巨大的改进,但会有所帮助。

 var tbody = $('#results-table-data>tbody');
for (var i = 0, rowsLength = rows.length; i < rowsLength; i++) {
    var item = rows[i];
    var row = $('<tr>');

    for (var j = 0, fieldsLength = fields.length; j < fieldsLength; j++) {
        var field = fields[j].name;
        var value = item[field] === null ? '(null)' : item[field];
        row.append('<td class="data-' + getTypeClass(columnTypes[j], item[field]) + '">' + value + '</td>');
    }
    tbody.append(row);
}

您可以在此处查看循环时间的比较: https://jsperf.com/caching-array-length/4

关于javascript - 渲染到表中的 1,000 行速度很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33990829/

相关文章:

node.js - grunt 插件 grunt-contrib-haml 无法处理 UTF-8 符号

javascript - 确定 Canvas 网格的单元格 x 和 y

javascript - Vue JS 一个复选框取消选中另一个

javascript - 如果 javascript 中的数字为正数,则更改文本颜色

javascript - script 标签的 type 属性的 javascript MIME 类型是什么?

jquery - 带模式面板的 Bootstrap-notify 通知,出现在禁用模糊区域下方

node.js - 如何通过 Web 浏览器访问 Node.js 脚本?

javascript - 无法获取未定义或 null 引用 javascript 的属性

javascript - 如何判断用户是否在我的页面上选择了文本

javascript - 在表行中查找类