Qual é a diferença entre Protocol Buffers e Flatbuffers?

109

Ambos são bibliotecas de serialização e são desenvolvidos por desenvolvedores do Google. Existe alguma grande diferença entre eles? É muito trabalhoso converter código usando Buffers de protocolo para usar FlatBuffers ?

mineração
fonte

Respostas:

126

Eu escrevi uma comparação detalhada de alguns sistemas de serialização, incluindo Protobufs e FlatBuffers, aqui:

https://kentonv.github.io/capnproto/news/2014-06-17-capnproto-flatbuffers-sbe.html

No entanto, a comparação se concentra mais em comparar os três novos sistemas de serialização de "cópia zero" e inclui Protobufs principalmente como ponto de referência. Além disso, sou o autor de Cap'n Proto e também o autor de Protobufs v2 (fui responsável pelo código aberto de Protobufs no Google), então a comparação pode ser tendenciosa.

Observe que Protobufs é usado em todos os próprios serviços do Google, enquanto FlatBuffers é mais um projeto experimental que, pelo que entendi, não foi amplamente adotado internamente.

Kenton Varda
fonte
Olá, Sr. Varda, muito obrigado pelos comentários! E obrigado por essas ferramentas de código aberto muito úteis! Como um usuário regular, eu uso o grande Protocol Buffersnos projetos. Depois de verificar as novidades sobre FlatBufferso projeto em Github, achei que é experimental como você disse e não é muito quente, então também pesquisei a comparação de desempenho entre o PBe FBe postei esta pergunta. Obrigado pela comparação! Significa muito! E não posso concordar mais com a benchmarkseção em sua postagem the relative performance of these libraries depends deeply on the use case.
mineração
8
pode não ser amplamente adotado, mas o benchmark parece muito bom. A biblioteca de jogos de código aberto cocos2d-x está usando com sucesso agora. Acho que Flatbuffer passou da fase experimental
user18853
3
@KentonVarda, alguma nova atualização para comparações com o FlatBuffers desde junho de 2014?
TJR de
@TJR: Não acompanhei isso. Provavelmente um monte mudou. Fico feliz em incorporar qualquer atualização se alguém me informar o que deve ser atualizado.
Kenton Varda
11
Flatbuffers são usados ​​pelo Facebook em seu aplicativo Android, de acordo com este artigo .
Alex Che