gpt4 book ai didi

Gwt性能问题: huge data and celltable

转载 作者:行者123 更新时间:2023-12-03 03:58:46 27 4
gpt4 key购买 nike

我有一个服务器端服务,可以向我发送大量 DTO。我需要将它们放入 CellTable 中。大概有 10-200 行,我需要同时看到所有内容。

我有一个服务器端日志,用于跟踪我的服务的最后一个“人造”代码行(就在返回之前)。

最好的情况是,此日志与完全加载的表之间有 2 分钟的间隙。大多数时候,这个过程中会出现一些问题,让我陷入困境。

我有什么选择?

谢谢

编辑:我尝试了Andrei的想法,区分数据下载(rpc回调)的长度和单元表加载的长度。

我想确定一下,所以这就是我在回调中所做的事情:

@Override
public void onSuccess(ResponseBean result) {
Window.alert("success " + new Date().toString());

resultPanel.updateResults(result);

Window.alert("celltable " + new Date().toString());
}

第一个警报发生在约 10 秒后。但第二个从未被调用过。

这是 updateResults 背后的方法:

public void updateResults(ResponseBean response) {
dataProvider.getList().clear();
dataProvider.getList().addAll(response.beans());
myCellTable.setPageSize(response.beans.size());
}

编辑2:我尝试了很多事情。当我尝试用我的数据填充单元格表时,就会出现问题。在Chrome中,出现了chrome版本的BSOD。在Firefox中,它会默默地中断,但剩余的js指令不会被执行。如果我尝试在 Firebug 中读取控制台,我的 Firefox 使用 ~2.5GB 内存就会卡住。如果我使用 gwt-runner,它也会卡住。

在我的示例中,只有 4 行(4 个具有多个依赖项的对象)!

我怎样才能找到什么地方出了问题?

感谢您的帮助:)

最后:好吧,看来我是个白痴。 getValues() 中的某个地方有一段不应该存在的“业务逻辑”,这导致了 OutOfMemory 错误。

要点:

  • 跟踪服务器端的最后一次调用和客户端 onSuccess 的第一行,看看问题是否与 RPC 相关
  • 如果你的单元格坏了,但只有几行,那么你做了一些你不会感到自豪的事情
  • Scheduler.get().scheduleDeffered 允许您渲染页面,然后执行业务逻辑。所以这很酷。

谢谢大家

最佳答案

通常情况下,我会把钱押在 RPC 序列化成为瓶颈,而不是 CellTable 渲染上。
然而,您说第一个警报在 10 秒后出现,这与此相反。

使用 CellTable 渲染 200 个 DTO 应该足够快。
通过网络发送 200 个 DTO 也不会有问题。

我使用了 CellTable 并通过线路发送了大约 5000 个 DTO,没有任何性能问题(尽管我一次只显示 50 个并使用分页)。

一些想法:

  • 开发模式比生产模式慢得多(特别是在反序列化方面)。因此也在生产模式下测试性能。
  • 要找出导致问题的具体原因,请使用 Chrome 开发工具。您可以分析您的代码并查看导致延迟的原因。
  • 您能否在代码中手动创建 200 个虚拟 DTO,并将其传递给 updateResults 函数并查看性能比较。
  • 显示多少列?如果您显示许多列,请将其减少到仅一列,然后查看它如何影响性能。
  • CellTable 列中使用的 getter 是否具有昂贵的业务逻辑?

关于Gwt性能问题: huge data and celltable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12585408/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com