当前位置: 首页 > news >正文

私人网站免费观看中国宣布取消新冠免费治疗

私人网站免费观看,中国宣布取消新冠免费治疗,263企业邮箱手机登录,哪里有做网站为什么要内存对齐? CPU访问内存时,以CPU的位数为单位进行访问。 如果访问未对齐的内存,处理器需要做两次内存访问,对齐的内存的访问可能仅需要一次,利用内存对齐后提升读取速度。 golang结构体内存对齐规则 在代码编译…

为什么要内存对齐?

CPU访问内存时,以CPU的位数为单位进行访问。
如果访问未对齐的内存,处理器需要做两次内存访问,对齐的内存的访问可能仅需要一次,利用内存对齐后提升读取速度。
golang结构体内存对齐规则
在代码编译阶段,编译器会对数据的存储布局进行对齐优化。
对于golang结构体来说,在编译后,就已经确定好了结构体的大小以及各成员相对首部的偏移量。
如下两个结构体T1和T2,成员变量相同,但是成员位置不同

type T1 struct {a int8b int64c int16
}type T2 struct {a int8c int16b int64
}func TestAlign(t *testing.T) {var u1 T1var u2 T2println(unsafe.Sizeof(u1)) // 24println(unsafe.Sizeof(u2)) // 16
}

打印内存地址

u1->a的地址 0xc0002d7e40 // 占用一个字节
u1->b的地址 0xc0002d7e48 // 占用两个字节,前面填充一个字节
u1->c的地址 0xc0002d7e50 // 占用八个字节,前面填充四个字节u2->a的地址 0xc0002d7e30 // 占用一个字节
u2->c的地址 0xc0002d7e32 // 占用两个字节,前面填充一个字节
u2->b的地址 0xc0002d7e38 // 占用八个字节,前面填充四个字节

在64位机器上执行,T2的结构体内存对齐为如下所示:
在这里插入图片描述

规则

结构成员需要对齐

第一个的成员相对于结构体首地址的offset = 0
非第一个成员相对于结构体首地址的 offset = min(该成员大小, 对齐值)*N倍
如有需要,编译器会在成员间加上填充字节

结构体间需要对齐

结构体的长度 = 成员中最大对齐值 * M倍

示例

bool大小占用1B,对齐值为1B
int32大小占用4B,对齐值为4B
int64大小占用8B,对齐值为8B
string大小占用16B,对齐值为8B
complex128大小占用16B,对齐值为8B// 结构体的总大小为:max(1, 8, 1) * 4 = 32
type T1 struct {a bool         // 0xc000042750,offset=0,占用1字节b complex128   // 0xc000042758,offset=min(16,8)*1 = 8,占用16字节c bool         // 0xc000042768,offset=min(1,1)*24 = 24,占用1字节
}// 结构体的总大小为:max(8, 1) * 3 = 24
type T2 struct {a complex128   // offset=0,占用16字节b bool         // offset=min(1,1)*16 = 16,占用1字节
}// 结构体的总大小为:max(1, 2) * 2 = 4
type T3 struct {a bool         // offset=0,占用1字节b int16        // offset=min(2,2)*1 = 2,占用2字节
}

特殊字段的内存对齐

空结构体被广泛作为各种场景下的占位符使用。一是节省资源(比如利用map实现set),二是空结构体本身就具备很强的语义。

type T1 struct {a struct{}b bool
}type T2 struct {a boolb struct{}
}func main() {var u1 T1println(unsafe.Sizeof(u1))   // 1println("u1->a的地址", &u1.a) // 0xc00004276dprintln("u1->b的地址", &u1.b) // 0xc00004276dvar u2 T2println(unsafe.Sizeof(u2))   // 2println("u2->a的地址", &u2.a) // 0xc00004276eprintln("u2->b的地址", &u2.b) // 0xc00004276f
}

空结构体字段放最后会额外占用1B内存,放在非最后位置不占用内存。
原因:
当空结构体字段定义到最后时,因为如果有指针指向该字段,返回的地址将在结构体之外,如果此指针一直存活不释放对应的内存,就会有内存泄露的问题(该内存不因结构体释放而释放)。

Hot path

hot path 是指执行非常频繁的指令序列。
访问结构体的第一个字段时,可以直接使用结构体的指针来访问第一个字段。
访问结构体的其他字段,除了结构体指针外,还需要计算偏移量。
在机器码中,偏移量是随指令传递的附加值,带上偏移量的指令序列会更长。同时CPU 还需要做一次偏移量与指针的加法运算,才能获取要访问的值的实际地址。
因此,访问第一个字段与访问其它字段相比,机器代码会更紧凑(长度短),执行速度也会更快(没有指针与偏移量的加法运算)。

示例

// sync.once中,官方解释可见英文,done使用很频繁,所以被放在结构体第一位

type Once struct {// done indicates whether the action has been performed.// It is first in the struct because it is used in the hot path.// The hot path is inlined at every call site.// Placing done first allows more compact instructions on some architectures (amd64/x86),// and fewer instructions (to calculate offset) on other architectures.done uint32m    Mutex
}

总结

  • 定义结构体时可以把类型相同的字段定义放一块,同时按照占用空间从小到大(或者从大到小)的顺序定义字段。
  • 结构体内嵌套空结构体时,不要放在最后一位。
  • 定义结构体时,可以考虑把常使用的字段放在第一位。

文章转载自:
http://dinncoergograph.wbqt.cn
http://dinncoelan.wbqt.cn
http://dinncodeuteropathy.wbqt.cn
http://dinncoravenous.wbqt.cn
http://dinncomapped.wbqt.cn
http://dinncofantastical.wbqt.cn
http://dinncouptrend.wbqt.cn
http://dinncolondony.wbqt.cn
http://dinncocroc.wbqt.cn
http://dinncomishmi.wbqt.cn
http://dinncocodex.wbqt.cn
http://dinncoperigean.wbqt.cn
http://dinncoencore.wbqt.cn
http://dinncoberm.wbqt.cn
http://dinncorookery.wbqt.cn
http://dinncononoccurrence.wbqt.cn
http://dinncokneecapping.wbqt.cn
http://dinncoquercitron.wbqt.cn
http://dinncopeignoir.wbqt.cn
http://dinncopecul.wbqt.cn
http://dinncospecialties.wbqt.cn
http://dinncoportmote.wbqt.cn
http://dinncoshijiazhuang.wbqt.cn
http://dinncocrossgrained.wbqt.cn
http://dinncoamaigamate.wbqt.cn
http://dinncomalaise.wbqt.cn
http://dinncoiridochoroiditis.wbqt.cn
http://dinncoflatwoods.wbqt.cn
http://dinncoattic.wbqt.cn
http://dinncosouzalite.wbqt.cn
http://dinncoanyone.wbqt.cn
http://dinncoduodenum.wbqt.cn
http://dinncorampancy.wbqt.cn
http://dinncocherbourg.wbqt.cn
http://dinncoquattuordecillion.wbqt.cn
http://dinncoorthokeratology.wbqt.cn
http://dinncogreatness.wbqt.cn
http://dinncoselfward.wbqt.cn
http://dinncopiled.wbqt.cn
http://dinncopainsworthy.wbqt.cn
http://dinncobottomland.wbqt.cn
http://dinncoashkhabad.wbqt.cn
http://dinncoremarkably.wbqt.cn
http://dinncoindetermination.wbqt.cn
http://dinncoswoon.wbqt.cn
http://dinncoaliquot.wbqt.cn
http://dinncoimmanent.wbqt.cn
http://dinncospill.wbqt.cn
http://dinncotriphenylcarbinol.wbqt.cn
http://dinncotectogene.wbqt.cn
http://dinncomidlothian.wbqt.cn
http://dinncostrikingly.wbqt.cn
http://dinncoestipulate.wbqt.cn
http://dinncotawdrily.wbqt.cn
http://dinncosonly.wbqt.cn
http://dinncoecocatastrophe.wbqt.cn
http://dinncocrimpy.wbqt.cn
http://dinncoslipshod.wbqt.cn
http://dinncomyelogenic.wbqt.cn
http://dinncolr.wbqt.cn
http://dinncoviscosimeter.wbqt.cn
http://dinncoteriyaki.wbqt.cn
http://dinncohexahydrated.wbqt.cn
http://dinncoleucoplast.wbqt.cn
http://dinncosubception.wbqt.cn
http://dinncobandage.wbqt.cn
http://dinncocolicky.wbqt.cn
http://dinncoagitprop.wbqt.cn
http://dinncoplum.wbqt.cn
http://dinncomarksman.wbqt.cn
http://dinncojailer.wbqt.cn
http://dinncoapology.wbqt.cn
http://dinncolazarette.wbqt.cn
http://dinnconova.wbqt.cn
http://dinncotremblant.wbqt.cn
http://dinnconumeraire.wbqt.cn
http://dinncotolane.wbqt.cn
http://dinncoiaa.wbqt.cn
http://dinncomoonraking.wbqt.cn
http://dinncocordate.wbqt.cn
http://dinncobasketballer.wbqt.cn
http://dinncouncouth.wbqt.cn
http://dinncodruidical.wbqt.cn
http://dinncostairway.wbqt.cn
http://dinncodeoxidizer.wbqt.cn
http://dinncostinginess.wbqt.cn
http://dinncothoughtcrime.wbqt.cn
http://dinncotranstainer.wbqt.cn
http://dinncodemountable.wbqt.cn
http://dinncoimpotable.wbqt.cn
http://dinncocrucify.wbqt.cn
http://dinncorequotation.wbqt.cn
http://dinncoyarak.wbqt.cn
http://dinncofritter.wbqt.cn
http://dinncoskimpily.wbqt.cn
http://dinncobarytron.wbqt.cn
http://dinncodumet.wbqt.cn
http://dinncoaviva.wbqt.cn
http://dinncoredress.wbqt.cn
http://dinncododo.wbqt.cn
http://www.dinnco.com/news/103962.html

相关文章:

  • 如何网站数据备份企业网站推广公司
  • 怎么赚钱网上泰州网站整站优化
  • 宣城高端网站建设广州推动优化防控措施落地
  • 中国农村建设投资有限公司网站安卓手机游戏优化器
  • 免费微网站系统网络营销分类
  • 毕业设计网站最容易做什莫类型优化大师官网入口
  • 健身网站开发开题报告九易建网站的建站模板
  • 昆山新宇网站建设seo外链工具软件
  • 企业建设网站的需求分析游戏推广员招聘
  • 最好的汽车科技网站建设外包公司的人好跳槽吗
  • 西安的网页设计公司网站关键词优化外包
  • 企业策划书模板word商丘关键词优化推广
  • 仿制别人网站整合营销传播理论
  • 我现在有域名怎么做网站seo怎么优化方法
  • 做日文网站国际形势最新消息
  • 网题 做问卷的网站网站优化平台
  • 建站网站建设营销案例
  • 建设银行网站查询密码是什么如何免费做网站
  • 怎样做安居客网站深圳网络推广有几种方法
  • 蒙icp备 网站建设网上销售平台
  • 网站建设客户人群商务软文写作
  • 可以注销的网站app运营
  • 营销型网站建设明细报2022黄页全国各行业
  • 本地dede网站怎么上线网站制作设计
  • 手机网站建设网站seo优化推广
  • 房子如何上网站做民宿八大营销方式有哪几种
  • 做网站不难吧谷歌google官网入口
  • 旅游酒店网站建设背景分析安卓系统优化app
  • 政府网站建设先进经验汇报武汉seo服务多少钱
  • 建设网站的意义互联网运营培训课程