// parallel package main
import ( "fmt" "math/rand" "runtime" "sort" "time" )
func testData() [][]int { now := time.Now() src := rand.NewSource(now.UnixNano()) seed := rand.New(src) data := make([][]int, 10000) for i := 0i <len(data)i++ { data[i] = make([]int, 10000) for j := 0j <10000j++ { data[i][j] = seed.Intn(100000) } } return data }
func test() { data := testData() ch := make(chan int) for i := 0i <len(data)i++ { go func(ch chan int, data []int) { sort.Ints(data[:]) ch <- 1 }(ch, data[i][:]) } for i := 0i <len(data)i++ { <-ch } }
func main() { st := time.Now() test() fmt.Println(time.Since(st)) runtime.GOMAXPROCS(2) st = time.Now() test() fmt.Println(time.Since(st)) runtime.GOMAXPROCS(3) st = time.Now() test() fmt.Println(time.Since(st)) runtime.GOMAXPROCS(4) st = time.Now() test() fmt.Println(time.Since(st)) fmt.Println("Hello World!") }
该代码的作用是生成10000个数组,每个数组有10000个int元素,分别调用不同CPU核数进行排序计算。用的是Go内置的排序函数。
中的时间如下
25.6269405s
14.1753705s
10.3508423s
8.5466479s
分别是单核,2核,3核,4核的计算时间。的确用多核后计算速度提升很大。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)