生活分享

  • 首页
HETAO
业余码农、业余机械爱好者
  1. 首页
  2. 未分类
  3. 正文

memory align/内存对齐 golang和csharp

2022年1月19日 1117点热度 0人点赞 0条评论

file

为什么要内存对齐

总线读取总是32位的倍数读取的,对齐算法有助于提升程序的运行效率,大部分的语言都在底层实现了这部分的支持,只是实现有所不同。

golang的对齐和c#的对齐

两者比较不太公平,毕竟csharp要先转一次IL。他们的底层数据类型为了内存对齐都会采用padding的方式,但是又有不同,比如bool类型,csharp中是4个字节,而golang是一个字节。理论上bool只需要一个bit来表示true和false,但是对齐理论告诉我们你起码得是一个字节为最小的单位,所以八个bool也是一个字节的大小,然后这里csharp居然占用了4个字节,查找不少资料,给了很多理由和借口,总之csharp的哲学就是保证底层运行的可靠和原子性。所以在csharp中用uint16反倒比bool省空间。

Post Views: 1,201
标签: 暂无
最后更新:2022年1月19日

jinzhao

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

COPYRIGHT © 2022 生活分享. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

浙ICP备14004285号-1