私は最近、Javaのリプレイサーバーによって実装されたいくつかのサービスを呼び出すためにPHPのリフトクライアントを使用します。倹約php libのパフォーマンスの問題
しかし、私は、複雑な大量のデータを転送する場合、PHPは時間シリアライズの多くを過ごしたので、TBinaryProtocol::readXXX()
またはTBinaryProtocol::writeXXX()
のコールの数万人のデータをデシリアライズことがわかりました。
これを最適化する良いアイデアはありますか?
私は最近、Javaのリプレイサーバーによって実装されたいくつかのサービスを呼び出すためにPHPのリフトクライアントを使用します。倹約php libのパフォーマンスの問題
しかし、私は、複雑な大量のデータを転送する場合、PHPは時間シリアライズの多くを過ごしたので、TBinaryProtocol::readXXX()
またはTBinaryProtocol::writeXXX()
のコールの数万人のデータをデシリアライズことがわかりました。
これを最適化する良いアイデアはありますか?
TBufferedTransport
またはTFramedTransport
が役立ちます。前者はI/Oコールを減らすためのバッファのみを有し、後者はワイヤデータを変更することによってトランスポートスタックを変更する(すなわち、データブロックの全長を保持するInt32が最初に挿入される)。
したがって、TBufferedTransport
は純粋にローカルなものです。対照的に、TFramedTransport
はクライアントとサーバーの両方で使用する必要があります。それとは別に、両者は非常によく似た働きをしています。
さらに、使用可能なサーバーの種類によってはTFramedTransport
が必要なので、新しいAPIの場合は最初からTFramedTransport
を追加することをお勧めします。
ありがとうございます。私は、PHP拡張モジュールthrift_protocolでTBinaryProtocolAcceleratedを使うのが最善の方法だと分かりました。 –
Thriftでバグや問題が疑われる場合は、この[mailngリスト](https://thrift.apache.org/mailing)で議論することをお勧めします。 – JensG