2016-04-03 10 views
0

をJSONビルダーを使用したとき、私はドキュメントタイプマッピングのJSON表現を作成するElasticsearchのXContentBuilderを使用しています:IntelliJの非常に遅い更新ラージオブジェクトのための

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()があるsized--マッピングが適度にありますコールと合計で.field()コールが含まれます。

このmappingオブジェクトを宣言すると、Intellijは非常にゆっくりと構文の強調表示/エラーチェックを行います。 同じファイルint x = "";と入力すると、IDEがその行を誤ってハイライト表示するのに約20秒かかります。 mappingオブジェクトをサイズの約半分に縮小すると、通常の1秒未満の応答に比べてIDEは4秒で応答します。自動プロジェクト作成プロセス(IntelliJの設定で「プロジェクトを自動的に作成」を選択した)が通常の速度で実行されることに注意してください。

これはIntelliJの「バグ」ですか、それとも広範に連鎖するためのファクトリメソッドではありませんか?チェーンを多くの小さな呼び出しに分割することで問題は解決しますが、より良い方法がありますか?

追加情報:IntelliJの15.0.2アルティメットエディションを使用して

のWindows 7 64ビット、8ギガバイトのRAM、3.00GHz

実行中@コアi5-4430(クワッドコア) 2つのVMとEclipse IDEが横にあり、パフォーマンスの問題が発生していない

答えて

0

私は小さな文に分割する以外の解決策を見いだせませんでした。チェーンの長さを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(); 
関連する問題