【问题标题】:IntelliJ very slow update when using json builder for large object使用 json builder 处理大对象时 IntelliJ 更新非常慢
【发布时间】:2016-04-03 23:02:56
【问题描述】:

我正在使用 Elasticsearch 的 XContentBuilder 创建文档类型映射的 JSON 表示:

XContentBuilder mapping = XContentFactory.jsonBuilder();
mapping.startObject()
    .startObject("someType")
        .startObject("_ttl")
            .field("enabled", true).field("default", "90d")
        .endObject()
        //... and so forth. The full declaration is about 100 lines long.

映射大小适中——总共有大约 30 个 .startObject() 调用和 60 个 .field() 调用。

声明这个mapping 对象会导致 Intellij 响应非常缓慢的语法高亮/错误检查。如果我在同一个文件中的任意位置键入int x = "";,IDE 需要大约 20 秒的时间来突出显示错误的行。如果我将我的mapping 对象减小到大约一半大小,与正常的亚秒级响应相比,IDE 仍然需要 4 秒来响应。请注意,自动项目制作过程(我在 IntelliJ 设置下选择了“自动制作项目”)以正常速度执行。

这是 IntelliJ 的“错误”,还是工厂方法不应该被如此广泛地链接?将链分解为许多较小的调用可以解决问题,但有更好的方法吗?

其他信息:

使用 IntelliJ 15.0.2 终极版

Windows 7,64 位,8GB RAM,Core i5-4430(四核)@ 3.00GHz

同时运行 2 个虚拟机和 Eclipse IDE,从未出现性能问题

【问题讨论】:

    标签: java elasticsearch intellij-idea


    【解决方案1】:

    除了将语句分解为更小的语句之外,我还没有找到解决方案。似乎将链长度保持在 5 个或更少的项目将提供不错的 IntelliJ 反应时间。示例:

    XContentBuilder mapping = XContentFactory.jsonBuilder();
    mapping = mapping.startObject().startObject("someType");
    mapping = mapping.startObject("_ttl").field("enabled", true).field("default", "90d").endObject();
    // ...
    mapping = mapping.endObject().endObject();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-20
      相关资源
      最近更新 更多