문제

두 가지 구문 분석 (직렬화, 사제화)과 네트워크를 통해 패킷을 보내는 측면에서 이진과 XML 직렬화 사이의 성능 차이에 대한 좋은 추정이 있습니까?

도움이 되었습니까?

해결책

아니요.

XML 문서 자체 내부에 어떤 종류의 데이터가 있는지에 따라 다릅니다. 구조화 된 데이터가 많으면 XML의 오버 헤드가 커집니다. 예를 들어, 데이터가 보이는 경우 :

<person>
  <name>Dave</dave>
  <ssn>000-00-0000</ssn>
  <email1>xxxxxx/email1>
</person>
...

XML 문서가있는 경우보다 더 많은 오버 헤드가 있습니다.

<book name="bible">
 In the beginning God created the heavens and the earth. 
 Now the earth was formless and empty ... 
 And if any man shall take away from the words of the book of this prophecy, God shall take away his part out of the book of life, and out of the holy city, and from the things which are written in this book. He which testifieth these things saith, Surely I come quickly. Amen. Even so, come, Lord Jesus.
</book>

그래서 그것은 실제로 공정한 질문이 아닙니다. 그것은 당신이 보내려는 데이터와 압축을하는 방법/인지에 따라 크게 달라집니다.

다른 팁

가장 큰 차이점 BinaryFormatter 및 XML 직렬화는 이식성이다. Binaryformatter는 버전간에 보장하기가 어렵 기 때문에 단기 저장 또는 전송에만 적합합니다.

그러나 두 가지 모두를 최대한 활용할 수 있습니다. 그리고 더 작습니다 그리고 맞춤형 바이너리 직렬화를 사용하여 더 빨리하십시오. 직접 할 필요조차 없습니다. -P

protobuf-net Google 프로토콜 버퍼 이진 직렬화 사양의 .NET 구현입니다. 어느 것보다 작습니다 XmlSerializer 또는 BinaryFormatter, 충분히 휴대용 (버전 간뿐만 아니라 PB 스트림, 예를 들어 Java 등을로드 할 수 있음), 확장 가능 및 빠른 빠른. 또한 상당수의 사용자와 함께 포괄적으로 테스트되었습니다.

크기와 속도의 전체 분해, 덮개 XmlSerializer, BinaryFormatter, DataContractSerializer 그리고 protobuf-net입니다 여기.

본능적으로 바이너리가 더 효율적이라고 말하고 싶지만 실제로는 직렬화되는 데이터에 달려 있습니다.

이 기사를 확인하십시오. http://www.nablasoft.com/alkampfer/index.php/2008/10/31/binary-versus-xml-serialization-size/

성능을 지적하는 것만으로도보고 싶은 유일한 지표는 아닙니다.

  • 건축의 용이성. 시리얼 라이저/사제제 루틴을 구축하고 철저히 테스트하는 데 며칠/주가 있습니까?
  • 데이터 소비의 용이성. 클라이언트가 사전 구축 된 오픈 소스 파서를 사용하거나 (잠재적으로 버그가 많은) 코드 자체를 구현해야합니까?
  • 디버깅의 용이성. 대중 교통에서 데이터를 볼 수있게되면 디버그에 도움이됩니까? 이진 형식은 모든 문제를 난독 화하는 경향이 있습니다.
  • 각 방법의 유지 보수 비용은 얼마입니까?

개인적으로, 나는 실제 테스트에 의해 성능 병목 현상이 입증 될 때까지 게시 된 XML 표준 및 오픈 소스 구문 분석 라이브러리를 사용합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top