探索Go语言切片:高级操作与性能优化
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
// 初始化切片
slice := make([]int, 1000000)
for i := range slice {
slice[i] = rand.Int()
}
// 测量直接复制切片的时间
start := time.Now()
copySlice := append([]int(nil), slice...) // 使用 append 函数创建 slice 的副本
elapsed := time.Since(start)
fmt.Printf("直接复制用时: %s\n", elapsed)
// 测量使用 range 循环复制每个元素的时间
start = time.Now()
copySlice = make([]int, len(slice))
for i, v := range slice {
copySlice[i] = v
}
elapsed = time.Since(start)
fmt.Printf("循环复制用时: %s\n", elapsed)
// 测量使用 copy 函数复制切片的时间
start = time.Now()
copy(copySlice, slice) // 使用 copy 函数复制切片
elapsed = time.Since(start)
fmt.Printf("使用 copy 函数复制用时: %s\n", elapsed)
}
这段代码首先初始化了一个包含100万个随机整数的切片,然后通过三种不同的方法来复制这个切片:直接使用append
函数,使用range
循环,以及使用标准库函数copy
。每种方法前后记录时间,并打印出复制所用的时间。这样可以帮助开发者了解不同场景下的性能差异。
评论已关闭