golang切片
阿新 • • 發佈:2021-07-03
目錄
golang切片
記憶體拷貝耗費時間
package main import ( "fmt" "time" ) func kb() { data := make([]byte, 0) l := 1024 for i := 0 ; i < l;i++ { data = append(data, uint8(1)) } data2 := make([]byte, l, l) t := time.Now() copy(data2, data) fmt.Println("KB資料耗費時間為: ", time.Since(t).String()) } func mb() { data := make([]byte, 0) l := 1024 * 1024 for i := 0 ; i < l;i++ { data = append(data, uint8(1)) } data2 := make([]byte, l, l) t := time.Now() copy(data2, data) fmt.Println("MB資料耗費時間為: ", time.Since(t).String()) } func gb() { data := make([]byte, 0) l := 1024 * 1024 * 1024 for i := 0 ; i < l;i++ { data = append(data, uint8(1)) } data2 := make([]byte, l, l) t := time.Now() copy(data2, data) fmt.Println("GB資料耗費時間為: ", time.Since(t).String()) } func main() { kb() time.Sleep(time.Microsecond * 300) mb() time.Sleep(time.Microsecond * 300) gb() time.Sleep(time.Microsecond * 300) }
測試結果
F:\code_me\github\evio-master\telnet\3>go run main.go KB資料耗費時間為: 0s MB資料耗費時間為: 516.3µs GB資料耗費時間為: 400.2188ms F:\code_me\github\evio-master\telnet\3>go run main.go KB資料耗費時間為: 0s MB資料耗費時間為: 0s GB資料耗費時間為: 433.0305ms F:\code_me\github\evio-master\telnet\3>go run main.go KB資料耗費時間為: 0s MB資料耗費時間為: 0s GB資料耗費時間為: 379.715ms F:\code_me\github\evio-master\telnet\3>go run main.go KB資料耗費時間為: 0s MB資料耗費時間為: 0s GB資料耗費時間為: 377.2188ms F:\code_me\github\evio-master\telnet\3>go run main.go KB資料耗費時間為: 0s MB資料耗費時間為: 521.6µs GB資料耗費時間為: 123.0336ms F:\code_me\github\evio-master\telnet\3>go run main.go KB資料耗費時間為: 0s MB資料耗費時間為: 1.0286ms GB資料耗費時間為: 376.8729ms
啪的一下,很快啊
copy()函式
package main import ( "fmt" ) func main() { data := make([]byte, 0) l := 10 for i :=0; i < l;i++ { data = append(data, uint8(1)) } tmm := []byte{uint8(2), uint8(3), uint8(3), uint8(3)} data = data[3:6] fmt.Println(len(data), cap(data)) copy(data, tmm) fmt.Println(len(data), cap(data)) fmt.Println(data) } ## 輸出 3 13 3 13 [2 3 3]