1.循环体测试
下面程序的两段循环体中的差异仅在于是否使用了局部变量来减小一次加法运算spa
func main() { buf := make([]byte, 100000000) var offset int var sum int //不使用局部变量,多一次加法运算 t3 := time.Now() offset = 0 sum = 0 for i := 0; i < len(buf); i++ { sum += int(buf[offset+i]) sum += int(buf[offset+i]) } t4 := time.Now().Sub(t3) fmt.Println(t4) //使用局部变量 /*t1 := time.Now() offset = 0 sum = 0 for i := 0; i < len(buf); i++ { temp := offset + i sum += int(buf[temp]) sum += int(buf[temp]) } t2 := time.Now().Sub(t1) fmt.Println(t2)*/ return }
屡次运行的结果:第一段(未使用局部变量)总要比第二段慢7%左右。实验中的循环次数必定要足够大(10^8以上),不然结果不定blog
结论:在循环次数很大的状况下,经过局部变量能减小必定运行时间。class
2.类型转换对运行时间的影响变量
两段测试程序的惟一区别为是否进行了类型转换循环
结果:二者的运行时间基本一致程序
结论:类型转换对程序运行影响甚微。im