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 关注
- 166 浏览
添加回答
举报