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

世界上前端做的最好的网站暂时没有域名怎么做网站

世界上前端做的最好的网站,暂时没有域名怎么做网站,网站友情链接 关键词经常改动,视频生成二维码免费go-基于逃逸分析来提升性能程序 为什么要学习逃逸分析: 为了提高程序的性能,通过逃逸分析我们能知道指标是分配到堆上还是栈上,如何是 分配到栈上,内存的分配和释放都是由编译器进行管理的,分配和释放的速度都非常的…

go-基于逃逸分析来提升性能程序

为什么要学习逃逸分析:

为了提高程序的性能,通过逃逸分析我们能知道指标是分配到堆上还是栈上,如何是 分配到栈上,内存的分配和释放都是由编译器进行管理的,分配和释放的速度都非常的快;如果分配到堆上,堆不像栈那样可以自动清理,它会引起崩溃进而进行垃圾回收,而垃圾回收又会占用比较大的系统开销。

什么是逃逸分析

逃逸分析简单来说就是分析在程序的哪些位置可以访问到该指针

简单的来说,它是在对变量放在堆上或者栈上进行分析,该分析在编译阶段完成。如果一个变量超过了函数调用的生命周期,那么这个变量就在函数外部存在引用了,编译器会把这个变量分配到堆上,接下来我们就说这个变量发生逃逸了。

如何确定是否逃逸

go run -gcflags '-m' main.go

可能出现逃逸的场景

pakcage main type Student struct {Name interface{}}func main() {stu := new(Student)stu.Name = "tom"}
  • 函数main可以被内联(can inline main)。
  • 在第45行,new(Student)函数调用没有逃逸到堆上分配(does not escape)。
  • 在第46行,字符串"tom"逃逸到了堆上分配(escapes to heap)。

interface赋值会发生逃逸,优化方案只需要将类型设置为固定类型,例如:string

02

package main type Student struct {Name string
}func GetStudent() *Student {stu := new(Student)stu.Name = "tom"return stu
}func main() {GetStudent()
}
  • 函数GetStudent可以被内联(can inline GetStudent)。
  • 函数main可以被内联(can inline main)。
  • 在第55行,new(Student)函数调用逃逸到堆上分配(escapes to heap)。
  • 在第61行,new(Student)函数调用没有逃逸到堆上分配(does not escape)。
  • 在第61行,调用GetStudent函数被内联(inlining call to GetStudent)。

返回指针类型,会发生逃逸

函数传递指针和传值,传递指针可以减少底层值的拷贝,可以提高效率,但是如果拷贝的数据量小,由于指针传递会产生逃逸,可能会使用堆,也可能会增加GC的负担,所以交付负载不一定是高效的。

不要盲目使用指针作为参数,虽然减少了复制,但指针逃逸的头部可能更大

package mainfunc main() {nums := make([]int, 10000, 10000)for i := range nums {nums[i] = i}
}
  • 函数main可以被内联(can inline main)。
  • 在第66行,使用make函数创建的切片逃逸到了堆上分配(escapes to heap)

栈空间不足,发生逃逸,设置合理容量

总结
  1. 逃逸分析是编译器在静态编译时完成的
  2. 逃逸分析后可以确定哪些变量可以在分配栈上,栈的性能好
http://www.yayakq.cn/news/545868/

相关文章:

  • 华东网站建设学软件开发需要什么基础
  • 湖北建设监理协会网站企业微信会话存档
  • 域名网站搭建wordpress设置图片大小
  • 开源企业网站台州建设局网站
  • 网站开发贴吧怎么把wordpress
  • 校园门户网站设计论文网站开发属于哪个大学专业
  • 一条龙建站提高工作效率的措施
  • 网站托管费用多少优秀企业网站赏析
  • 网页具有动画网站建设技术常熟制作网站的地方
  • 荣县网站建设深圳58同城招聘网
  • 专门培训seo的网站seo领导屋
  • 中国搜索提交网站做网站一般链接什么数据库
  • 恶意点击别人的网站百度 网站建设
  • 网站防止被采集域名访问网站啥意思
  • 手机网站被禁止访问怎么打开网页百度站长平台官网
  • 免费微信网站源码岳阳网站项目建设报道
  • 静态网站开发实训报告品牌运营推广方案
  • 网站百度指数分析a站全名叫什么
  • 商务网站需求分析广西住房和城乡建设网站视频专栏
  • 网站布局怎么做网站留言模块
  • 搞钱的路子网站做网站的无锡
  • PHP网站开发工程师自己怎么做个网站
  • wordpress 网站运行时间响应式网站建设案例
  • 网站后台可以做两个管理系统么杭州网站建设网络
  • 做网站需要做数据库聊城网站建设品牌
  • 网站建设与管理方案的总结东莞网站排名优化报价
  • 可做外链的视频网站招c1驾驶员300元一天
  • 百度一下百度主页龙岩网站建设方案优化
  • 惠州网站建设领头怎样选择高性价比的建站公司
  • 扬州做企业网站国外做电商平台的网站还有什么