【问题标题】:How to handle huge data in javascript?如何在javascript中处理大量数据?
【发布时间】:2018-07-02 04:29:25
【问题描述】:

我有一个对象列表(列表大小超过 25k)。我需要对该列表执行不同的操作,例如在 UI 上突出显示这些词,添加、更新、删除列表中的对象等。 我还必须检查重复项。 为此类操作处理大量数据的最佳方法是什么。

【问题讨论】:

  • 分页。其他任何事情都需要太多的 DOM 节点。
  • 即使我使用分页,要在 UI 上突出显示文本,我也需要遍历完整列表
  • 它不是很大。在正确的时间做操作,防止不必要的操作,捕获节点或它们的相同属性,相信虚拟dom。
  • @AkashSuryawanshi 这不是一个真正的问题。关键是尽可能少地保留在 DOM 中。 Javascript 可以毫不费力地处理 25k 项。 DOM 不能。

标签: javascript arrays performance


【解决方案1】:
  1. 您不应该在客户端对大量数据进行计算。
  2. 使用数据库(SQL 或 No-SQL)或缓存解决方案(例如 redis)并存储预处理数据(不知道它是否符合您的要求)。
  3. 正如@Shadow 提到的,使用分页(过度的 DOM 操作会降低性能)
  4. 您可以使用套接字来处理小块数据并使用套接字事件发送。然后,您可以在每个小块之后操作 DOM(不知道它是否符合您的要求)。
  5. How to handle large array operations in Javascript?
  6. What's the most efficient way to manage large datasets with Javascript/jQuery in IE?
  7. How To Process Large Volumes Of Data In JavaScript

【讨论】:

    【解决方案2】:

    您也可以在网上阅读类似的文章: https://www.keycdn.com/blog/javascript-performance/

    转到http://jsben.ch/ 并在浏览中查看其他的基准

    使用 document.CreateElement

    即使对于 1M+ 而言,遍历数组也很便宜:

    var arr = new Array(1111111).fill().map( (_,n)=>n );
    var t0 = performance.now();
    for( var l = arr.length - 1; l >= 0; --l ) {
        arr[l]+= 1;
    }
    var t1 = performance.now();
    console.log(t1-t0+" millisec");

    【讨论】:

      猜你喜欢
      • 2013-04-09
      • 2014-06-12
      • 2015-02-24
      • 1970-01-01
      • 1970-01-01
      • 2013-12-24
      • 2017-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多