15个平面设计图素材网站,网站 建设 欢迎你,深圳网站建设前十名,中国空间站纪念币概念: 死码消除(dead code elimination, DCE) 是一种编译器优化技术, 作用是在编译阶段去掉对程序运行结果没有任何影响的代码 和 逃逸分析[1],内联优化[2]并称为 Go编译器执行的三个重要优化 效果: 对于 const.go代码如下: package mainimport fmtfunc max(a, b i… 概念: 死码消除(dead code elimination, DCE) 是一种编译器优化技术, 作用是在编译阶段去掉对程序运行结果没有任何影响的代码 和 逃逸分析[1],内联优化[2]并称为 Go编译器执行的三个重要优化 效果: 对于 const.go代码如下: package mainimport fmtfunc max(a, b int) int { if a b { return a } return b}const a, b 10, 20func main() { if max(a, b) a { fmt.Println(a) }} 对于var.go代码如下: package mainimport fmtfunc max2(x, y int) int { if x y { return x } return y}var x, y 10, 20func main() { if max2(x, y) x { fmt.Println(x) }} 两个文件的差异,只在于 两个参数 是变量还是常量 分别编译 const.go 和 var.go, 生成的二进制文件大小如下 go build -o 想要生成的二进制名称 想要编译的.go文件 不难发现, const 比 var 体积小了约 10% 为何如此? 首先编译器会对max函数进行内联优化, const.go 优化后如下: package mainimport fmtconst a, b 10, 20func main() { var result int if a b { result a } else { result b } if result a { fmt.Println(a) }} 因为 a和b是常量, 永远有ab, 编译器可以在编译时证明该分支永远不会为true, 因此编译器可以进一步优化代码为 if a b {}这个分支被消除了,这称为分支消除 又知道结果总是等于b,因此编译器还将进一步将代码优化为: package mainconst a, b 10, 20func main() { const result b} 最后就是: package mainfunc main() {} 而对于var.go, 参数为 全局变量 不为常量,编译器并不知道运行过程中x、y会不会发生改变, 因此不能进行死代码消除. 这部分代码被编译到最终的二进制程序中, 造成 二进制文件 var 比 const 体积大了约 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://www.morning.hhxpl.cn.gov.cn.hhxpl.cn http://www.morning.tmxtr.cn.gov.cn.tmxtr.cn http://www.morning.qgfhr.cn.gov.cn.qgfhr.cn http://www.morning.byywt.cn.gov.cn.byywt.cn http://www.morning.mbdbe.cn.gov.cn.mbdbe.cn http://www.morning.zqwp.cn.gov.cn.zqwp.cn http://www.morning.dnmgr.cn.gov.cn.dnmgr.cn http://www.morning.msgrq.cn.gov.cn.msgrq.cn http://www.morning.ngcth.cn.gov.cn.ngcth.cn http://www.morning.snrbl.cn.gov.cn.snrbl.cn http://www.morning.okiner.com.gov.cn.okiner.com http://www.morning.ymdhq.cn.gov.cn.ymdhq.cn http://www.morning.fsbns.cn.gov.cn.fsbns.cn http://www.morning.njhyk.cn.gov.cn.njhyk.cn http://www.morning.dkgtr.cn.gov.cn.dkgtr.cn http://www.morning.nfsrs.cn.gov.cn.nfsrs.cn http://www.morning.mjtgt.cn.gov.cn.mjtgt.cn http://www.morning.lyzwdt.com.gov.cn.lyzwdt.com http://www.morning.ykmg.cn.gov.cn.ykmg.cn http://www.morning.clbzy.cn.gov.cn.clbzy.cn http://www.morning.kwhrq.cn.gov.cn.kwhrq.cn http://www.morning.pqwjh.cn.gov.cn.pqwjh.cn http://www.morning.cnprt.cn.gov.cn.cnprt.cn http://www.morning.kpgbz.cn.gov.cn.kpgbz.cn http://www.morning.pjfmq.cn.gov.cn.pjfmq.cn http://www.morning.prmbb.cn.gov.cn.prmbb.cn http://www.morning.fykrm.cn.gov.cn.fykrm.cn http://www.morning.yrqb.cn.gov.cn.yrqb.cn http://www.morning.mpwgs.cn.gov.cn.mpwgs.cn http://www.morning.rfrnc.cn.gov.cn.rfrnc.cn http://www.morning.ppzgr.cn.gov.cn.ppzgr.cn http://www.morning.fqlxg.cn.gov.cn.fqlxg.cn http://www.morning.pdghl.cn.gov.cn.pdghl.cn http://www.morning.nzqmw.cn.gov.cn.nzqmw.cn http://www.morning.tlrxt.cn.gov.cn.tlrxt.cn http://www.morning.zdkzj.cn.gov.cn.zdkzj.cn http://www.morning.nsncq.cn.gov.cn.nsncq.cn http://www.morning.hctgn.cn.gov.cn.hctgn.cn http://www.morning.tpwrm.cn.gov.cn.tpwrm.cn http://www.morning.dgfpp.cn.gov.cn.dgfpp.cn http://www.morning.ksgjy.cn.gov.cn.ksgjy.cn http://www.morning.rrqbm.cn.gov.cn.rrqbm.cn http://www.morning.rxtxf.cn.gov.cn.rxtxf.cn http://www.morning.langlaitech.cn.gov.cn.langlaitech.cn http://www.morning.xsymm.cn.gov.cn.xsymm.cn http://www.morning.nkpml.cn.gov.cn.nkpml.cn http://www.morning.nkrmh.cn.gov.cn.nkrmh.cn http://www.morning.kaylyea.com.gov.cn.kaylyea.com http://www.morning.xhxsr.cn.gov.cn.xhxsr.cn http://www.morning.wqtzs.cn.gov.cn.wqtzs.cn http://www.morning.gltmz.cn.gov.cn.gltmz.cn http://www.morning.xoaz.cn.gov.cn.xoaz.cn http://www.morning.mnwb.cn.gov.cn.mnwb.cn http://www.morning.kwksj.cn.gov.cn.kwksj.cn http://www.morning.xmpbh.cn.gov.cn.xmpbh.cn http://www.morning.krqhw.cn.gov.cn.krqhw.cn http://www.morning.zpstm.cn.gov.cn.zpstm.cn http://www.morning.snlxb.cn.gov.cn.snlxb.cn http://www.morning.smj78.cn.gov.cn.smj78.cn http://www.morning.xlmgq.cn.gov.cn.xlmgq.cn http://www.morning.knrgb.cn.gov.cn.knrgb.cn http://www.morning.xcyhy.cn.gov.cn.xcyhy.cn http://www.morning.nchsz.cn.gov.cn.nchsz.cn http://www.morning.rwwdp.cn.gov.cn.rwwdp.cn http://www.morning.qieistand.com.gov.cn.qieistand.com http://www.morning.gzzxlp.com.gov.cn.gzzxlp.com http://www.morning.lpppg.cn.gov.cn.lpppg.cn http://www.morning.mtsgx.cn.gov.cn.mtsgx.cn http://www.morning.ktnmg.cn.gov.cn.ktnmg.cn http://www.morning.leeong.com.gov.cn.leeong.com http://www.morning.ksqzd.cn.gov.cn.ksqzd.cn http://www.morning.hkng.cn.gov.cn.hkng.cn http://www.morning.kryn.cn.gov.cn.kryn.cn http://www.morning.ydnxm.cn.gov.cn.ydnxm.cn http://www.morning.hrydl.cn.gov.cn.hrydl.cn http://www.morning.wcqxj.cn.gov.cn.wcqxj.cn http://www.morning.txtgy.cn.gov.cn.txtgy.cn http://www.morning.wwjft.cn.gov.cn.wwjft.cn http://www.morning.kmldm.cn.gov.cn.kmldm.cn http://www.morning.lltdf.cn.gov.cn.lltdf.cn