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

网站建设类论文格式营销咨询师是做什么的

网站建设类论文格式,营销咨询师是做什么的,网站建设开发报价,关键词上首页的有效方法为什么要内存对齐#xff1f; CPU访问内存时#xff0c;以CPU的位数为单位进行访问。 如果访问未对齐的内存#xff0c;处理器需要做两次内存访问#xff0c;对齐的内存的访问可能仅需要一次#xff0c;利用内存对齐后提升读取速度。 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 // 0xc000042750offset0占用1字节b complex128 // 0xc000042758offsetmin(168)*1 8占用16字节c bool // 0xc000042768offsetmin(11)*24 24占用1字节 }// 结构体的总大小为max(8, 1) * 3 24 type T2 struct {a complex128 // offset0占用16字节b bool // offsetmin(11)*16 16占用1字节 }// 结构体的总大小为max(1, 2) * 2 4 type T3 struct {a bool // offset0占用1字节b int16 // offsetmin(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://www.dnsts.com.cn/news/272940.html

相关文章:

  • php网站建设安装环境wordpress设置当前页面标题
  • 建设网站前需要的市场分析wordpress用户自动禁止登录
  • 南山网站建设哪家好安徽建讯建设工程管理有限公司
  • 产品摄影网站网站设计公司 龙岗
  • 有做兼职赚钱的网站吗个人网站设计内容
  • 网页设计好看的网站包头移动的网站建设
  • 哪里有营销型网站最新报价温江网站制作
  • 专业集团网站建设网站对应的ip
  • 网站建设人员工资えっちな秘密基地视频
  • 网站开发的一般步骤东莞制作网站的联系方式
  • 网站建设维护总结网业协同什么意思
  • 烟台网站建设给力臻动传媒网站建设与网络编辑心得体会
  • 哈尔滨网站设计公司电话网站模板 阿里
  • 门头沟建设网站做自己的网站要多久
  • 网站后台登录界面58同城建设网站
  • 网站开发中的著作权归属低价刷赞网站推广
  • 深圳网站设计服务商优对 网站开发
  • 个人网站申请学校网站集群建设
  • 网站域名解析查询站内推广的主要目的是
  • 顺的网站建设精英西安全网优化 西安网站推广
  • 昆明哪里做网站怎么做个人网页
  • 大连模板建站平台如何建三网合一网站
  • 建筑培训网站竞价推广和信息流推广
  • 做网站如何挑选服务器设计公司调研报告
  • 怎么样开网站公司网站建设计入什么明细科目
  • iis打开网站变成下载邢台微商城制作设计
  • 外贸网站如何建站wordpress挂广告能赚多少
  • 建筑设计案例网站推荐百度seo怎么收费
  • phpcmsv9 网站搬家怎么做网页代码
  • 合肥建站seo招聘要求