Недавно я использовал php thrift client для вызова некоторой службы, реализованной java thrift server.
Но я обнаружил, что когда я передаю большое количество сложных данных, php тратит много времени на сериализацию и десериализацию данных из-за десятков тысяч TBinaryProtocol::readXXX()
или же TBinaryProtocol::writeXXX()
звонки.
Любая хорошая идея, чтобы оптимизировать это?
TBufferedTransport
или же TFramedTransport
может помочь Первая имеет только промежуточный буфер для сокращения вызовов ввода / вывода, а вторая также изменяет транспортный стек, изменяя проводные данные (то есть Int32, содержащее общую длину блока данных, вставляется в начале).
Следовательно, TBufferedTransport
это чисто местная вещь, в отличие TFramedTransport
должен использоваться как на клиенте, так и на сервере. Кроме того, оба работают очень похоже.
Кроме того, некоторые из доступных типов серверов требуют TFramedTransport
поэтому для любого нового API это может быть хорошим выбором для добавления TFramedTransport
с начала.
Других решений пока нет …