gpt4 book ai didi

java - GWT 客户端代码中的 Collections.sort 是否会导致 JavaScript 膨胀?

转载 作者:行者123 更新时间:2023-12-01 12:29:26 25 4
gpt4 key购买 nike

我们已采取措施确保在 GWT 客户端代码中使用 List<> 的具体实现,以避免生成过多的 JavaScript。 (注意:我知道我们可以将类型列入黑名单。)

如果我们使用 Collections.sort 客户端,是否会导致同样的膨胀?或者它会认识到我们只将它用于 ArrayList 并相应地生成代码吗?

最佳答案

仅使用 ArrayList 而不是 List 可以防止将这些类型引用为 RPC 可序列化时的膨胀。为了实现这一点,请避免在任何 RPC 接口(interface)的参数或返回类型中,或者在您定义的可序列化类的字段中列出 List

在其他地方执行此操作(包括传递给像 Collections.sort 这样的 util 方法时)是不必要的 - 编译器实际上足够聪明,可以解决这些情况并在编译时简化代码。

造成这种差异的原因非常简单 - 让我们将编译器视为三个基本步骤。

  • 首先,我们生成所需的任何代码(GWT.create() 是 GWT 表示“请生成此类型的实现”的线索)。
  • 然后,由于我们知道运行应用程序可能需要的所有可能的 Java 代码,因此我们优化了整个项目,并且可以简化。
  • 最后,我们将简化/优化的 Java 翻译为 JavaScript。

序列化器代码的生成发生在第一步,但“类型紧缩”和“方法调用紧缩”优化发生在第二步。如果是相反的情况,编译器可能会决定删除一些看起来没有使用的代码,但 RPC 生成代码在它消失后决定使用它。

因此,在创建 RPC 接口(interface)和可序列化类时,只需需要额外具体说明您的类型。其他任何地方(例如删除 Collections.sort)都是不成熟(且无用)的优化。

关于java - GWT 客户端代码中的 Collections.sort 是否会导致 JavaScript 膨胀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26063029/

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