今天查看gin源码时,发现其中有着这样一段for循环代码我觉得比较有技巧:
可以看到,它的for循环遍历中,初始化变量初始化了两个,一个i一个遍历的长度,确实妙,这样就不用每次for循环计算len(t)了。
那我们也试试这样到底能快多少呗。
package main
import (
"fmt"
"time"
)
func main() {
bT := time.Now()
test1()
eT := time.Since(bT)
fmt.Println("test1 run time:", eT)
bT1 := time.Now()
test2()
eT1 := time.Since(bT1)
fmt.Println("test2 run time:", eT1)
}
func test1() {
var arr [10000000]int
var sum int
for i, al := 0, len(arr); i < al; i++ {
sum += i
}
}
func test2() {
var arr [10000000]int
var sum int
for i := 0; i < len(arr); i++ {
sum += i
}
}
我们采用一百万次循环来查看效率,test1函数采用快速for循环,test2采用一般for循环,看看运行结果:
好家伙,快了10倍,学到了学到了!