代碼優化的一些嘗試

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

相關文章
相關標籤/搜索