我最近使用php thrift客户端来调用java thrift服务器实现的一些服务。
但是我发现当我传输大量复杂数据时,由于成千上万的{{1}}或TBinaryProtocol::readXXX()
,php花费了大量时间对数据进行序列化和反序列化
调用
优化这个有什么好主意吗?
答案 0 :(得分:1)
TBufferedTransport
或TFramedTransport
可能有所帮助。前者仅在其间具有缓冲器以减少I / O调用,而后者还通过修改线数据来改变传输堆栈(即,在开始时插入保持数据块的总长度的Int32)。
因此,TBufferedTransport
是纯粹的本地事物,相比之下TFramedTransport
必须在客户端和服务器上使用。除此之外,两者的工作非常相似。
此外,某些可用的服务器类型需要TFramedTransport
,因此对于任何新API,从一开始就添加TFramedTransport
可能是一个不错的选择。