关于内存对齐

来源:10-9 中间件 proto 文件开发

慕瓜9063200

2023-03-28

老师你好,之前了解到go语言结构体中相同类型的字段紧挨着存放能起到内存对齐的效果,例如:

type user struct {
	id  int
	age int
	name string 
	address string
}

现在看到proto文件的消息体定义,我就想到这个问题,就是proto文件的消息体中相同类型的字段紧挨着存放有没有内存对齐的效果?

写回答

1回答

Cap

2023-04-01

在 Protocol Buffers中,这个原则并不适用。原因在于 protobuf 使用不同的方式来表示和存储数据。protobuf 使用一种紧凑的二进制格式,它基于字段的标签编号(tag number)来序列化和反序列化数据。对于 protobuf 来说,字段的顺序并不影响内存对齐。事实上,protobuf 的设计目标之一就是使数据尽可能地紧凑,以便在网络传输中节省带宽。


1
0

Go 开发者的涨薪通道,自主开发 PaaS 平台核心功能

云原生专家带来稀缺的 PaaS 平台实战,带你直击核心业务+技术

400 学习 · 169 问题

查看课程