IntelliJ在对大型对象使用json生成器时更新速度非常慢



我正在使用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的一个"bug",还是工厂方法不应该被如此广泛地链接?将链分解为许多较小的调用可以解决问题,但有更好的方法吗?

其他信息:

使用IntelliJ 15.0.2终极版

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

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

除了将语句分解成更小的语句之外,我还没有找到其他解决方案。似乎将链条长度保持在5个或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();

最新更新