Dav*_*542 9 javascript performance ag-grid react-virtualized fin-hypergrid
我使用angular-ui-grid(http://ui-grid.info/)来显示表格数据.总的来说,它很慢,所以我们决定使用ag-grid(https://www.ag-grid.com/).这对于常规大小的数据集来说,性能更高,更好.
但是,现在我们正在处理一些大小为100列×10,000行(~1M单元)的表格数据,并且网格的性能似乎相当慢.
我想知道是否有人使用过hypergrid(https://fin-hypergrid.github.io/core/2.0.2/) - 它似乎'解决'大cols x 大行的问题,在他们的演示中似乎在大型数据集上更快(几乎一个数量级).
我没有尝试过你提到的那些示例库,但也许我可以解释为什么fin-hypergrid最突出.我的观点主要基于我的JavaScript知识以及这种东西如何在后面工作.
我也许应该开始react-virtualized和ag-grid:
react-virtualized,并ag-grid为他们的应用在尽可能平稳的方式这些变化的算法.ag-grid从我所看到的,是受这个问题影响最大的那个,因为你实际上可以看到一些尚未完成渲染的元素,并且当你滚动太快时会遇到严重的延迟.
react-virtualized另一方面,以最流畅的方式实现其算法的出色工作.这可能是DOM操作类别中可用的最佳库,尽管它仍然存在操作DOM太快而产生延迟的问题,尽管只有在涉及大块数据时才会出现这种情况.
以下是fin-hypergrid擅长的原因:
fin-hypergrid是它根本不执行DOM操作,因此您已经从因使用过快而添加和删除过程导致的问题中解脱出来<canvas>fin-hypergrid还仅显示用户看到的数据并动态删除不可见的内容.它还提前添加以实现平滑的滚动感,因此不会显示静态渲染项.fin-hypergrid 他们的滚动算法也能很好地实现最平滑的方式,所以没有抖动或延迟.现在这并不意味着hypergrid一切都很好,它也有一些缺点:
fin-hypergrid是使用HTML5 Canvas制作的,因此它不会接受CSS,因此它将成为一种真正的痛苦.您需要手动设置样式.<select>单选按钮,复选框等,实现起来真的很痛苦.如果您正在尝试实现类似的功能,请谨慎行事.现在总结一下,我可能建议使用,react-virtualized因为它提供了最流畅的卷轴,上面fin-hypergrid.如果你愿意忽视它的缺点fin-hypergrid,那么这fin-hypergrid是最好的选择.
更新:
自从我们讨论了JS/CSS,这些表的canvas实现.虽然这个人是不是主要是JS表库,但在一个框架,我应该提到的最后一个可能的竞争者Google Sheets可能已经使用它被称为d3.js.
d3.js 具有画布的速度和功能,同时保留HTML结构,这意味着可以用CSS设置它的样式!d3.jsd3.js这次讨论的唯一缺点是:
d3.js.Google Sheets那是.但他们不共享代码.d3.js 只是很难学,虽然有很多东西可以帮助我们更快地学习,但不是那么快.如果你想要使用CSS样式功能的Canvas速度,那么d3.js问题就是学习它的关键.
我经历了不同的数据网格选项。然后我发现了这个。
希望此答案对正在数据网格之间进行性能比较的任何人有所帮助。
即使在您阅读完我提供的文章后,这里也要注意的几点。
1-一旦一个网格“足够快”,这意味着渲染滞后不明显,那么哪个网格比下一个网格快都没有关系。
2-基于画布的网格不是HTML网格-您无法使用HTML对其进行自定义。网格将很难由标准JavaScript / CSS开发人员设置样式/主题/自定义。
选择您的毒药,因为它不仅涉及消费者方面的表现。
| 归档时间: |
|
| 查看次数: |
3172 次 |
| 最近记录: |