อะไรคือความแตกต่างระหว่าง Protocol Buffers และ Flatbuffers?


109

ทั้งสองเป็นไลบรารีการทำให้เป็นอนุกรมและพัฒนาโดยนักพัฒนาของ Google มีความแตกต่างกันมากหรือไม่? การแปลงรหัสโดยใช้Protocol Buffersเป็นงานจำนวนมากเพื่อใช้FlatBuffersหรือไม่?

คำตอบ:


127

ฉันได้เขียนการเปรียบเทียบโดยละเอียดของระบบการทำให้เป็นอนุกรมสองสามระบบรวมถึง Protobufs และ FlatBuffers ที่นี่:

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

อย่างไรก็ตามการเปรียบเทียบจะเน้นไปที่การเปรียบเทียบระบบอนุกรม "ศูนย์สำเนา" ใหม่ทั้งสามระบบและรวมถึง Protobufs ส่วนใหญ่เป็นจุดอ้างอิง นอกจากนี้ฉันเป็นผู้เขียน Cap'n Proto และเป็นผู้เขียน Protobufs v2 ด้วย (ฉันรับผิดชอบการจัดหา Protobufs แบบเปิดที่ Google) ดังนั้นการเปรียบเทียบอาจมีความลำเอียง

โปรดทราบว่า Protobufs ถูกนำไปใช้ในบริการต่างๆของ Google ในขณะที่ FlatBuffers เป็นโครงการทดลองมากกว่าซึ่งตามที่ฉันเข้าใจแล้วยังไม่ได้รับการนำมาใช้อย่างกว้างขวางภายใน


สวัสดีคุณวาร์ดาขอบคุณมากสำหรับความคิดเห็น! และขอบคุณสำหรับเครื่องมือโอเพนซอร์สที่เป็นประโยชน์เหล่านี้! ในฐานะผู้ใช้ทั่วไปฉันใช้สิ่งที่ยอดเยี่ยมProtocol Buffersในโครงการต่างๆ หลังจากตรวจสอบข่าวเกี่ยวกับFlatBuffersและโครงการในGithubฉันพบว่ามันเป็นการทดลองตามที่คุณพูดและไม่ได้ร้อนมากฉันจึงค้นหาการเปรียบเทียบประสิทธิภาพระหว่างPBและFBและโพสต์คำถามนี้ด้วย ขอบคุณสำหรับการเปรียบเทียบ! มันมีความหมายมาก! และผมก็ไม่สามารถตกลงกันได้มากขึ้นด้วยส่วนในโพสต์ของคุณbenchmark the relative performance of these libraries depends deeply on the use case
ขุด

8
อาจไม่ได้รับการยอมรับอย่างกว้างขวาง แต่เกณฑ์มาตรฐานดูดีทีเดียว ขณะนี้ไลบรารีเกมโอเพ่นซอร์ส cocos2d-x ใช้งานได้สำเร็จแล้ว ฉันคิดว่า Flatbuffer ได้ผ่านขั้นตอนการทดลองแล้ว
user18853

3
@KentonVarda มีการอัปเดตใหม่สำหรับการเปรียบเทียบกับ FlatBuffers ตั้งแต่เดือนมิถุนายน 2014 หรือไม่
TJR

@TJR: ฉันตามไม่ทันแล้ว น่าจะเป็นพวงที่เปลี่ยนไป ฉันยินดีที่จะรวมการอัปเดตหากมีคนแจ้งว่าควรอัปเดตอะไร
Kenton Varda

11
Flatbuffers จะถูกใช้โดย Facebook ภายในโปรแกรม Android ของพวกเขาตามบทความนี้
Alex Che
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.