1

各セルが個別に編集可能で、各セルのデータがDataObject(DO)と呼ばれるPOJOに含まれているJSFグリッドタイプのコンポーネントがあります。DOの構造は次のようになります。

public class DO {

 //Id should be the coordinate. eg x@y . x is the row position and y is the column  position
 private String id;
 //This is value that goes to the client after applying formatter
 private Object value;
 //flag to indicate whether the cell will be disabled
 private boolean disabled;
 //flag to indicate whether the cell will be rendered
 private boolean rendered=true;
//Editor type for the cell
private String editorType;

}

したがって、基本的にidフィールドはグリッド内のセルの位置(行と列)を識別します。

この場合、1000行X 100列のグリッドを作成できます。グリッド自体は最初はまばらに配置されています。つまり、ほとんどのセルには最初はDOが含まれていません。したがって、これらのセルの約30%にはデータが含まれ、残りのセルにはデータが含まれません。サーバーからクライアントのJavaScriptにajax経由でJSON形式のデータを渡す必要があります。アイデアは、DOのコレクションを反復処理し、JSON文字列を構築することです。

したがって、2つのセルのデータを持つグリッドのJSONは、次のようになります。

{
  id1 : {
  editorType:'InputEditor',
  value:'1234123',
  disabled:'false',
  rendered:'true'
  },

 id2 : {
 editorType:'SomeCustomEditor',
 value:'23456',
 disabled:'true',
 rendered:'true'
  }
 }

この出力JSONを最も効率的な方法で生成するために、ここで使用できる既存のJSON Javaライブラリは何ですか?ここでは、サンプルコードが役立ちます。

4

2 に答える 2

4

私は非常に高速なメッセージングプロセスのために多くの(to / from)JSONパーサーをテストしました。アプリは毎秒200*100のメッセージを送信する必要がありました。UIはJavaScript(およびWebSocket)であったため、JSONを使用することにしました。JSONObjectから始めました-それは惨めに失敗しました。

私は頭から離れた数字を持っていませんが、これらのAPIの相対速度は次のとおりです:(
最も速い)Jackson > Gson >>> JSONObject(最も遅い)

  1. ジャクソン
  2. Gson
  3. JSONObject

json-smartを評価する予定でしたが、Jacksonでまともなパフォーマンスが得られたのでやめました。あなたがそれに取り組んでいて、ベンチマークを実行することを計画しているなら。これを含めてください。私たちが観察した唯一の問題は、これはあまり人気がないように思われることです。そのため、誰も聞いていないコーナーコーナーケースの故障を避けるためにそれを使用することを躊躇しました。

于 2012-07-11T14:33:11.963 に答える
0

その量のデータについては、JSON以外のものの使用を検討する必要があります。

  • 独自のバイナリ形式をロールすることができます。たとえば、番号に4バイト、2つのフラグに1バイト、エディタタイプにコード番号、IDの各文字にそれぞれ1バイト。

  • あなたはグーグルprotobufsを使うことができました。これにより、コンパクトなバイナリ形式と、さまざまな言語で生成されたメッセージパーサーおよびアンパーサーが提供されます。

データのJSONコーディングは、空でないセルごとに約90バイトですが、バイナリ形式の場合は空でないセルごとに15バイトになる可能性があります。また、解析と解析解除のオーバーヘッドははるかに少なくなります。

于 2012-07-11T14:05:35.743 に答える