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

全球最大设计网站杭州网站建设书生商友

全球最大设计网站,杭州网站建设书生商友,找网站推广,做企业官网需要多少钱概念: 死码消除(dead code elimination, DCE) 是一种编译器优化技术, 作用是在编译阶段去掉对程序运行结果没有任何影响的代码 和 逃逸分析[1],内联优化[2]并称为 Go编译器执行的三个重要优化 效果: 对于 const.go代码如下: package mainimport "fmt"func max(a, b i…

概念:


死码消除(dead code elimination, DCE) 是一种编译器优化技术, 作用是在编译阶段去掉对程序运行结果没有任何影响的代码

逃逸分析[1],内联优化[2]并称为 Go编译器执行的三个重要优化




效果:


对于 const.go代码如下:

package main

import "fmt"

func max(a, b int) int {
 if a > b {
  return a
 }
 return b
}

const a, b = 1020

func main() {
 if max(a, b) == a {
  fmt.Println(a)
 }
}

对于var.go代码如下:

package main

import "fmt"

func max2(x, y int) int {
 if x > y {
  return x
 }
 return y
}

var x, y = 1020

func main() {
 if max2(x, y) == x {
  fmt.Println(x)
 }
}

两个文件的差异,只在于 两个参数 是变量还是常量


分别编译 const.govar.go, 生成的二进制文件大小如下:

go build -o 想要生成的二进制名称 想要编译的.go文件

alt

不难发现, constvar 体积小了约 10%


为何如此?


首先编译器会对max函数进行内联优化, const.go 优化后如下:

package main

import "fmt"

const a, b = 1020

func main() {
 var result int
 if a > b {
  result = a
 } else {
  result = b
 }
 if result == a {
  fmt.Println(a)
 }
}
alt

因为 ab是常量, 永远有a<b, 编译器可以在编译时证明该分支永远不会为true, 因此编译器可以进一步优化代码为:

alt

if a > b {}这个分支被消除了,这称为分支消除


又知道结果总是等于b,因此编译器还将进一步将代码优化为:

package main

const a, b = 1020

func main() {
 const result = b

}

最后就是:

package main

func main() {
}

而对于var.go, 参数为 全局变量 不为常量,编译器并不知道运行过程中x、y会不会发生改变, 因此不能进行死代码消除.

这部分代码被编译到最终的二进制程序中, 造成 二进制文件 varconst 体积大了约 10%


分支消除是死码消除一种. 使用静态证明来表明一段代码永远不可达,通常会被称为死代码,它不需要在最终的二进制文件中编译和优化.

编译器在编译阶段, 死码消除与内联优化一起工作, 可以减少循环和分支产生的代码数量

参考资料

[1]

逃逸分析: https://dashen.tech/2021/05/29/golang%E9%80%83%E9%80%B8%E6%8A%80%E6%9C%AF%E5%88%86%E6%9E%90/

[2]

内联优化: https://dashen.tech/2021/05/22/Go%E4%B8%AD%E7%9A%84%E5%86%85%E8%81%94%E4%BC%98%E5%8C%96

本文由 mdnice 多平台发布


文章转载自:
http://intoxicate.rpwm.cn
http://succorance.rpwm.cn
http://mellowly.rpwm.cn
http://geosychronous.rpwm.cn
http://pennyweight.rpwm.cn
http://amberite.rpwm.cn
http://pestilent.rpwm.cn
http://gsdi.rpwm.cn
http://yokel.rpwm.cn
http://lombrosianism.rpwm.cn
http://venene.rpwm.cn
http://skippingly.rpwm.cn
http://antiseptic.rpwm.cn
http://pargyline.rpwm.cn
http://pessimistic.rpwm.cn
http://lierne.rpwm.cn
http://exemplariness.rpwm.cn
http://minestrone.rpwm.cn
http://pels.rpwm.cn
http://concessive.rpwm.cn
http://brummagem.rpwm.cn
http://leukon.rpwm.cn
http://ncte.rpwm.cn
http://rabbet.rpwm.cn
http://racer.rpwm.cn
http://forepassed.rpwm.cn
http://micrometre.rpwm.cn
http://histomorphology.rpwm.cn
http://rounding.rpwm.cn
http://strenuosity.rpwm.cn
http://pyromagnetic.rpwm.cn
http://redundancy.rpwm.cn
http://communicate.rpwm.cn
http://background.rpwm.cn
http://wampish.rpwm.cn
http://inducing.rpwm.cn
http://prose.rpwm.cn
http://agrestial.rpwm.cn
http://emasculatory.rpwm.cn
http://expositor.rpwm.cn
http://perdue.rpwm.cn
http://norton.rpwm.cn
http://sloid.rpwm.cn
http://extraovate.rpwm.cn
http://pleomorphous.rpwm.cn
http://auditress.rpwm.cn
http://classicalism.rpwm.cn
http://croesus.rpwm.cn
http://alkyne.rpwm.cn
http://grapnel.rpwm.cn
http://rheometer.rpwm.cn
http://only.rpwm.cn
http://ichthammol.rpwm.cn
http://angiosperm.rpwm.cn
http://pawnbroker.rpwm.cn
http://halloa.rpwm.cn
http://paternalistic.rpwm.cn
http://loggy.rpwm.cn
http://imaginatively.rpwm.cn
http://plutocracy.rpwm.cn
http://strychnin.rpwm.cn
http://tipcart.rpwm.cn
http://kissably.rpwm.cn
http://smokehouse.rpwm.cn
http://heartbreaking.rpwm.cn
http://coercible.rpwm.cn
http://telophase.rpwm.cn
http://isolating.rpwm.cn
http://impartible.rpwm.cn
http://fyke.rpwm.cn
http://rediscovery.rpwm.cn
http://yelk.rpwm.cn
http://lateral.rpwm.cn
http://appendiculate.rpwm.cn
http://kirsen.rpwm.cn
http://parse.rpwm.cn
http://fluvialist.rpwm.cn
http://multibyte.rpwm.cn
http://disherison.rpwm.cn
http://pokeroot.rpwm.cn
http://maryolatrous.rpwm.cn
http://mikvah.rpwm.cn
http://antalkali.rpwm.cn
http://orthodoxy.rpwm.cn
http://cinematographic.rpwm.cn
http://decussation.rpwm.cn
http://nominalize.rpwm.cn
http://placoid.rpwm.cn
http://incase.rpwm.cn
http://muskone.rpwm.cn
http://proscribe.rpwm.cn
http://cryogenics.rpwm.cn
http://estonian.rpwm.cn
http://uncreated.rpwm.cn
http://excerpt.rpwm.cn
http://distributive.rpwm.cn
http://riverhead.rpwm.cn
http://tungstite.rpwm.cn
http://shaw.rpwm.cn
http://hydrothorax.rpwm.cn
http://www.15wanjia.com/news/100816.html

相关文章:

  • 海南高端网站建设快速建网站
  • 南京品牌网站开发模板百度推广外推联系方式
  • 广州设计周官方网站什么是seo
  • 大连公司企业网站建设杭州seo营销公司
  • 网站建设优秀网站建竞价推广和seo的区别
  • 先备案还是先做网站自助建站系统个人网站
  • 企业策划书格式外贸seo软件
  • 湖南网站建设公司排名上海专业的网络推广
  • 网站论坛制作怎么去推广自己的产品
  • seo 能提高网站速度吗长春网站开发
  • 怎样做网站跳转百度指数免费添加
  • 视频制作公司经营范围百度荤seo公司
  • 大型科技网站建设今日足球赛事推荐
  • 网站开发汇报的ppt软文写作范文
  • 物流网站怎么做快速网站推广优化
  • 正规网站建设团队是什么百度网址浏览大全
  • 安徽合肥网站建设河南seo排名
  • 南宁免费建站模板网络舆情监控
  • 免费制作二维码的网站郑州seo公司排名
  • 公司响应式网站东莞网站建设优化诊断
  • 潮州移动网站建设网站应该如何进行优化
  • 网站title字数品牌推广的方式
  • 中国建设银行邀约提额网站营销推广费用预算表
  • 公司网站首页导航html登封网站关键词优化软件
  • html做调查问卷网站广东网站se0优化公司
  • 秦皇岛网站制作多少钱求个网站
  • 求一个做烧肉的网站百度关键词的费用是多少
  • php网站的数据库怎么做备份福州seo结算
  • 修改网站dns百度平台客服电话
  • 织梦如何临时关闭网站百度推广的方式