GWT FlexTable性能和优化

dim*_*hez 5 gwt flextable

我正在研究GWT项目,我们使用FlexTable来显示一些数据.我知道我们应该使用CellTable,因为它具有更好的性能,但FlexTable更容易设计样式(特定样式的单元格),并且更容易更新特定的单元格.

要接收表的更新,我们正在使用WebSockets.我们现在面临的问题是,当通过WebSockets每秒发生超过100次更新时,CPU负载会很高.来自WebSocket连接的每条消息都包含表中多个单元格的更新.所以在实践中,每秒应该有超过100个更新,应该在FlexTable中呈现.带有4GB RAM的3GHz i5的CPU负载约为50%.如果我禁用数据的实际呈现(注释掉setText()方法调用),则CPU负载下降到5-10%.所以我知道DOM更新是瓶颈,而不是代码的其他部分.

它会更好吗?

  1. 请改用Grid
  2. 切换到CellTable(但是如何更新单元格更新)?
  3. 使用JS/JSNI来处理DOM而不是FlexTable setText()

是否有更好的方法来实现表并提高性能?

我试图谷歌,如果有人有类似FlexTable的问题,但只发现一般认为它只是缓慢,没有具体.我们完全使用JavaScript完成应用程序原型,每秒100次更新,CPU负载大约为15%

更新
Dropping css淡入淡出效果,我们用来表示单元格值的变化,将CPU负载降低了约10%.所以似乎DOM不是唯一的问题.

Str*_*lok 0

作为上述所有方法的替代方案(或补充,取决于您获得的结果),我将考虑使用一些调度程序方法。特别是 Scheduler.get().scheduleIncremental() 并批量更新,例如一次 10 个。这将允许浏览器在更新之间处理其他事件,并对 CPU 使用率产生积极影响。

CellTable 在这里根本不会帮助您,因为您无法更新单个单元格。因此,作为替代方案,您只需使用 Grid 并手动管理 TableElement。