Desenvolvimento

1 ago, 2014

Google abre código do FlatBuffers, biblioteca de serialização eficiente e multiplataforma

Publicidade

A equipe “Fun Propulsion Labs” do Google recentemente abriu o código do FlatBuffers. Construído para suprir necessidades de desempenho de desenvolvedores de jogos, o FlatBuffers armazena dados serializados em buffers que podem ser tanto guardados em arquivo ou transferidos via rede, sem nenhuma sobrecarga de parsing.

Alguns dos principais recursos do FlatBuffers são:

  • Acesso a dados serializados sem empacotamento/desempacotamento;
  • Velocidade e eficiência de memória – apenas o tamanho do buffer é necessário para acessar os dados; não requer alocação de memória adicional para acessar o buffer;
  • Flexibilidade – compatibilidade entre versões via de campos opcionais;
  • Código-fonte gerado é muito pequeno;
  • Fortemente tipado – erros são capturados em tempo de compilação e vez de em tempo de execução;
  • Conveniência – código sucinto por meio da geração de cabeçalhos C++. Funcionalidade opcional para fazer parse de esquemas e representações JSON em tempo de execução de maneira eficientemente (mais veloz e com uso mais eficiente de memória em relação a outros interpretadores JSON);
  • Multiplataforma: escrito em C++ sem dependências fora da STL, portanto pode ser utilizado em qualquer plataforma que possua um compilador C++. Atualmente, o projeto inclui métodos para construir bibliotecas para Android, Linux, Windows e OSX.

A vantagem do FlatBuffers sobre soluções alternativas, como Protocol Buffers ou interpretadores JSON, é possuir menor sobrecarga, especialmente devido à ausência de analisadores.

Utilizar o FlatBuffers em C++ envolve os seguintes passos:

  • Crie um arquivo de schema utilizando a DSL especificada;
  • Use o compilador de schema para gerar os arquivos de cabeçalho C++;
  • Inclua em seu programa o arquivo de cabeçalho gerado (é necessário também que o arquivo flatbuffers/flatbuffers.h esteja no caminho de seu programa);
  • Leia e escreva dados utilizando a classe FlatBufferBuilder (que constrói o flat buffer binário).

Há ainda algumas limitações, e o suporte para Java também é experimental neste estágio. O suporte para C# é um dos pedidos mais populares, e pode chegar no próximo lançamento.

Mais informações sobre o FlatBuffers estão disponíveis na documentação.

Com informações de InfoQ