2 回答

TA貢獻1856條經驗 獲得超11個贊
讓 Go 更快的五件事
戴夫·切尼
死代碼消除
func Test() bool { return false }
func Expensive() {
if Test() {
// something expensive
}
}
在這個例子中,雖然函數 Test 總是返回 false,但如果不執行它,Expensive 就無法知道這一點。
當測試被內聯時,我們得到這樣的東西
func Expensive() {
if false {
// something expensive is
// now unreachable
}
}
編譯器現在知道無法訪問昂貴的代碼。
這不僅節省了調用 Test 的成本,還節省了編譯或運行任何現在無法訪問的昂貴代碼。
例如,添加一些對測試有用的代碼,
func Complicated() {
if Test() {
// something for testing
}
}
切換Test自
func Test() bool { return false }
內聯
func Complicated() {
if false {
// something for testing
// unreachable
}
}
到
func Test() bool { return true }
內聯
func Complicated() {
if true {
// something for testing
// reachable
}
}
包含僅用于測試的代碼可能很有用。
- 2 回答
- 0 關注
- 200 瀏覽
添加回答
舉報