用同一条用户记录真实对比JSON、Avro、Protobuf三种格式的序列化体积和速度,看体积最小的Avro和速度最快的Protobuf真实是怎么各自取舍的。
命令 · python record = {"user_id": 123456, "name": "Alice Zhang", "email": "alice@example.com", "age": 29, "active": True}
JSON : size=99 bytes Avro : size=35 bytes Protobuf : size=40 bytes
JSON真实是体积最大的——因为它把字段名("user_id"、"email"这些)真实原样写进了每一条消息里;Avro和Protobuf都真实是二进制格式,字段的位置和类型由schema/proto定义决定,消息本身真实不需要重复带着字段名,体积天然小很多。
命令 · python # 真实各自跑10万次序列化和反序列化
JSON : ser=0.138s, deser=0.135s Avro : ser=0.139s, deser=0.121s Protobuf: ser=0.023s, deser=0.031s
每一步都是本文上面用同一条记录跑出来的原始结果。