2011-01-06 20 views
1

通信用にThrift 0.2ライブラリを使用するシステムをアップグレードしようとしています。これはかなり古いバージョン(最新の安定版は0.5)であり、パフォーマンスを大幅に向上させると主張されています(0.4)。しかし、基礎となるデータ形式に互換性のない変更があったかどうかに関する情報は見つかりませんでした。バージョニングスキームに基づいて、誰もそこにいないことを望みます。これらはまだ1.0より前のバージョンなので、おそらく安定性に対する期待は少ないでしょう。Thriftバージョン間のデータフォーマットの互換性

データフォーマット自体が下位互換性があることを知りたいのは、コンポーネントを1つずつアップグレードすることができるということです。

とにかく:私は、より多くの情報を持っている人が私に正しいドキュメントを教えてくれることを期待していました。

+0

0.5.0でプレイした後、生成されたコードがプラグアンドプレイではないことに気付きました。実装の拡張が異なるAPIがありますが、幸いなことにワイヤフォーマットは同じに見えます(サイズは少なくとも変更されませんでした) 。 – StaxMan

答えて

2

...バイナリフィールドの基になるデータ型としてbyte []を使用する代わりに、ByteBufferを使用するように切り替えました。つまり、デシリアライズ時に不要なバイト配列の割り当てやコピーを避けることができます。このアプローチは従来の2.5倍の速度で、ガベージコレクション時間の短縮を考慮していません。 アップグレードを入手するにはコードをいくつか変更する必要がありますが、それでも価値があるはずです。

出典:"Thrift 0.4.0 Released"文書。ソースコード内の関連する変更:"Switch binary field implementation from byte[] to ByteBuffer"

+1

Btw;私は最終的に新しいバージョンのThriftで遊ぶ機会を得ました。特定の部分への変更は2.5倍の向上をもたらすかもしれませんが、私のユースケースの一部を読み上げる全体的な増加は+ 50%でした(同じ量を読む時間が33%短縮されましたのデータ)。それはかなり良い改善です。 – StaxMan

関連する問題