第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Go編譯器技巧

Go編譯器技巧

Go
哈士奇WWW 2021-08-23 16:58:41
我在一次演講中讀到 Go 編譯器將積極刪除輸出二進制文件中未使用的代碼。我找不到的談話使用它來添加一些對測試有用的代碼。有沒有人有更多關(guān)于它是如何工作的信息?是否有關(guān)于高級測試技術(shù)的討論?
查看完整描述

2 回答

?
呼喚遠方

TA貢獻1856條經(jīng)驗 獲得超11個贊

讓 Go 更快的五件事


戴夫·切尼


死代碼消除


func Test() bool { return false }


func Expensive() {

  if Test() {

      // something expensive

  }

}

在這個例子中,雖然函數(shù) Test 總是返回 false,但如果不執(zhí)行它,Expensive 就無法知道這一點。


當(dāng)測試被內(nèi)聯(lián)時,我們得到這樣的東西


func Expensive() {

  if false {

      // something expensive is

      // now unreachable

  }

}

編譯器現(xiàn)在知道無法訪問昂貴的代碼。


這不僅節(jié)省了調(diào)用 Test 的成本,還節(jié)省了編譯或運行任何現(xiàn)在無法訪問的昂貴代碼。


例如,添加一些對測試有用的代碼,


func Complicated() {

    if Test() {

        // something for testing

    }

}

切換Test自


func Test() bool { return false }

內(nèi)聯(lián)


func Complicated() {

    if false {

        // something for testing

        // unreachable

    }

}


func Test() bool { return true }

內(nèi)聯(lián)


func Complicated() {

    if true {

        // something for testing

        // reachable

    }

}

包含僅用于測試的代碼可能很有用。


查看完整回答
反對 回復(fù) 2021-08-23
  • 2 回答
  • 0 關(guān)注
  • 189 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號