在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

Go语言是否有必要内存对齐

180次阅读
没有评论

共计 1247 个字符,预计需要花费 4 分钟才能阅读完成。

这篇文章主要讲解了“Go 语言是否有必要内存对齐”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“Go 语言是否有必要内存对齐”吧!

有些同学可能不知道,struct 中的字段顺序不同,内存占用也有可能会相差很大。比如:

type T1 struct { a int8  b int64  c int16} type T2 struct { a int8  c int16  b int64}

在 64 bit 平台上,T1 占用 24 bytes,T2 占用 16 bytes 大小;而在 32 bit 平台上,T1 占用 16 bytes,T2 占用 12 bytes 大小。可见不同的字段顺序,最终决定 struct 的内存大小,所以有时候合理的字段顺序可以减少内存的开销。

这是为什么呢?因为有内存对齐的存在,编译器使用了内存对齐,那么最后的大小结果就会不一样。至于为什么要做对齐,主要考虑下面两个原因:

平台(移植性)

不是所有的硬件平台都能够访问任意地址上的任意数据。例如:特定的硬件平台只允许在特定地址获取特定类型的数据,否则会导致异常情况

性能

若访问未对齐的内存,将会导致 CPU 进行两次内存访问,并且要花费额外的时钟周期来处理对齐及运算。而本身就对齐的内存仅需要一次访问就可以完成读取动作,这显然高效很多,是标准的空间换时间做法

有的小伙伴可能会认为内存读取,就是一个简单的字节数组摆放。但实际上 CPU 并不会以一个一个字节去读取和写入内存,相反 CPU 读取内存是一块一块读取的,块的大小可以为 2、4、6、8、16 字节等大小,块大小我们称其为内存访问粒度。假设访问粒度为 4,那么 CPU 就会以每 4 个字节大小的访问粒度去读取和写入内存。

在不同平台上的编译器都有自己默认的“对齐系数”。一般来讲,我们常用的 x86 平台的系数为 4;x8664 平台系数为 8。需要注意的是,除了这个默认的对齐系数外,还有不同数据类型的对齐系数。数据类型的对齐系数在不同平台上可能会不一致。例如,在 x8664 平台上,int64 的对齐系数为 8,而在 x86 平台上其对齐系数就是 4。

还是拿上面的 T1、T2 来说,在 x86_64 平台上,T1 的内存布局为:

T2 的内存布局为(int16 的对齐系数为 2):

仔细看,T1 存在许多 padding,显然它占据了不少空间。那么也就不难理解,为什么调整结构体内成员变量的字段顺序就能达到缩小结构体占用大小的疑问了,是因为巧妙地减少了 padding 的存在。让它们更“紧凑”了。

其实内存对齐除了可以降低内存占用之外,还有一种情况是必须要手动对齐的:在 x86 平台上原子操作 64bit 指针。之所以要强制对齐,是因为在 32bit 平台下进行 64bit 原子操作要求必须 8 字节对齐,否则程序会 panic。

感谢各位的阅读,以上就是“Go 语言是否有必要内存对齐”的内容了,经过本文的学习后,相信大家对 Go 语言是否有必要内存对齐这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-28发表,共计1247字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 少妇性l交大片7724com | 国产91麻豆视频 | 涩涩鲁亚洲精品一区二区 | 国产丶欧美丶日本不卡视频 | 一本大道无码人妻精品专区 | 精品亚洲国产成人 | 高清性色生活片a | 日本aaaaa毛片在线视频 | 黄色毛片一级片 | 精品91一区二区三区 | 亚洲欧美日韩专区 | 国产精品婷婷久久爽一下 | 91精品在线免费视频 | 毛片免费永久不卡视频观看 | 香蕉av777xxx色综合一区 | 成人精品在线视频 | 桃花岛精品亚洲国产成人 | 天天狠操 | 两个人看的www免费高清 | 青青青在线视频人视频在线 | 一级α爰做片免费观看 | 日韩精品第一区 | 美女视频黄a视频免费全过程在线 | 久久精品入口麻豆 | 最新在线精品国自产拍视频 | 九九热在线观看视频 | 欧美人与禽z0zo牲伦交 | 欧美第一黄网免费网站 | 亚洲欧美精品一中文字幕 | 有没有毛片网站 | 日韩欧美在线播放视频 | 久久精品在线免费观看 | 在线观看一区二区三区视频 | 国产亚洲av综合人人澡精品 | 国产无遮挡18禁网站免费 | 亚洲精品一线二线三线无人区 | 久久3| 日韩精品无码一本二本三本 | 日本熟妇人妻xxxx | 久青草久青草视频在线观看 | 伊人在线电影 |