代码优化的一些尝试
1.循环体
下面程序的两段循环体中的差别仅在于是否使用了局部变量来减少一次加法运算
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以上),否则结果不定
结论:在循环次数很大的情况下,通过局部变量能减少一定运行时间。
2.类型转换对运行时间的影响
两段测试程序的唯一区别为是否进行了类型转换
结果:两者的运行时间基本一致
结论:类型转换对程序运行影响甚微。