2016-01-29 20 views
5

私はいくつかの属性と1000個の浮動小数点値の配列(double [])を含むメッセージを扱います。メッセージがプロトコルバッファでシリアライズされると、 "packed = true"指示文のおかげで、ダブル値が整列され、コンパクトにメッセージに格納されます。Javaのプロトコルバッファ:プリミティブアレイを効率的に処理できますか?

しかし、デフォルトでは、そのメッセージ用に生成されたJavaクラスは配列リスト(!)としてダブル配列を表し、ボクシングプリミティブはオブジェクトに二重の値を入れ、それらのオブジェクトをメモリに散らばり、最後にdouble []表現さらなる集約のために...

繰り返しプリミティブ値をJavaプリミティブ配列として扱うクラスを生成するオプションはありますか?

答えて

0

いくつかの箇所でこのトピックについて話し合ったところ、回答は明確ででなく、です。

プロトコルバッファでは、数値のベクトルの2進表現が効率的です。しかし、現在のところ、Java実装では、これらのベクトルを効率的に非直列化することはできません(プリミティブ配列の代わりに、ボックス化された数値のコレクションを取得します...)

0

説明したように、hereは、ボックス化されていない値を格納するArrayListのバージョンが必要です。 javaジェネリックはオブジェクト(ボックス型)のみで動作するので、プリミティブ型ごとに実装が必要です。したがって、Apache Commons Primitivesが提供するものを使用できます。

関連する問題