首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Go编译器技巧

Go编译器技巧
EN

Stack Overflow用户
提问于 2014-10-20 15:24:13
回答 2查看 124关注 0票数 0

我在一次谈话中看到,Go编译器将积极删除输出二进制文件中没有使用的代码。我找不到的谈话用它来添加一些对测试有用的代码。有没有人知道更多关于这是如何工作的信息?有关于先进测试技术的讨论吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-20 22:44:56

五件事能使事情进展得很快 切尼 死码消除 func Test() bool {返回false } func昂贵(){ if Test() { //某某昂贵}} 在本例中,虽然function总是返回false,但是如果不执行函数测试,昂贵的用户就无法知道这一点。 当测试被内联时,我们会得到这样的信息 {如果假{ //某些昂贵的是//现在无法到达}} 编译器现在知道昂贵的代码是无法到达的。 这不仅节省了调用Test的成本,还节省了编译或运行任何现在无法访问的昂贵代码。

例如,添加一些用于测试的代码,

代码语言:javascript
复制
func Complicated() {
    if Test() {
        // something for testing
    }
}

Test

代码语言:javascript
复制
func Test() bool { return false }

内嵌

代码语言:javascript
复制
func Complicated() {
    if false {
        // something for testing
        // unreachable
    }
}

代码语言:javascript
复制
func Test() bool { return true }

内嵌

代码语言:javascript
复制
func Complicated() {
    if true {
        // something for testing
        // reachable
    }
}

只为测试而包含代码可能是有用的。

票数 0
EN

Stack Overflow用户

发布于 2014-10-20 18:39:41

Dave在他的基准博客文章中谈到了这一点:

http://dave.cheney.net/2013/06/30/how-to-write-benchmarks-in-go (关于编译器优化的注记)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26469244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档