Pergunta

Atualmente, estou usando o formatador binário (Remoting) para serializar e desserializar objetos para enviar ao redor da minha LAN.

Eu recentemente atualizado de 2,0 a .NET 3.5. Tem 3,5 introduziu novos tipos para melhorar o desempenho de serialização?

Eu olhei para o DataContractSerializer, mas esta serializa nada ao subjacente direito XML ... o que deve aumentar o consumo de memória.

O que é o serializador mais rápido para o envio de objetos em toda a minha LAN? Eu não me importo a cerca de interoperabilidade ou versionamento .... Eu preciso de velocidade!

Estou aberto a terceiros alternativas de código aberto.

Foi útil?

Solução

Parece Protocol Buffers pode ser o que você está procurando.

Há três implementações .NET que eu estou ciente de: protobuf-net , protobuf-csharp-port e Proto # .

comparações de desempenho mostram que Protocol Buffers superar o built-in serializers tanto em termos de tamanho e serialização velocidade / desserialização.

Outras dicas

Eu tenho alguns benchmarks para o líder .NET serializers disponíveis com base no conjunto de dados Adamastor.

@marcgravell binário protobuf-net é as implementações mais rápidas aferido que está prestes 7x mais rápido do que Microsoft serializer mais rápido disponível (o XML DataContractSerializer) na BCL.

JsonDataContractSerializer da Microsoft é muito lento - mais de 9x mais lento que protobuf-net e mais de 3,6x mais lento do que o meu próprio JsonSerializer .

Na desempenho comparação ligados por @Luke, aviso de que executa DataContractJsonSerializer muito bem em comparação com os outros serializers MS.

Dada a onipresença do JSON, e a facilidade de que você pode usar DataContractJsonSerializer, eu não vejo muita razão para usar "protocolo buffers". JSON será mais fácil de depurar quando saltando entre linguagens e plataformas, e ele irá comprimir muito bem.

(Eu amo como o Google leva CS 101 conceitos e torna-se famoso pela sua aplicação. Em C, que chamamos de "buffer de protocolo" "struct" s. Eles trabalham muito.)

Como eu demonstrei no esta resposta o código gerado pode ser a serializer mais rápido. No entanto, é em um estágio inicial e ainda carece de um par de características que outros serializers oferecem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top