亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么在 Golang 中迭代地圖比迭代切片慢這么多?

為什么在 Golang 中迭代地圖比迭代切片慢這么多?

Go
神不在的星期二 2021-10-25 18:17:06
我在 Golang 中使用地圖實現了一個稀疏矩陣,我注意到我的代碼在此更改后開始花費更長的時間來完成,在排除其他可能的原因之后,似乎罪魁禍首是地圖本身的迭代。Go Playground 鏈接(由于某種原因不起作用)。package mainimport (    "fmt"    "time"    "math")func main() {    z := 50000000    a := make(map[int]int, z)    b := make([]int, z)    for i := 0; i < z; i++ {        a[i] = i        b[i] = i    }    t0 := time.Now()    for key, value := range a {        if key != value { // never happens            fmt.Println("a", key, value)        }    }    d0 := time.Now().Sub(t0)    t1 := time.Now()    for key, value := range b {        if key != value { // never happens            fmt.Println("b", key, value)        }    }    d1 := time.Now().Sub(t1)    fmt.Println(        "a:", d0,        "b:", d1,        "diff:", math.Max(float64(d0), float64(d1)) / math.Min(float64(d0), float64(d1)),    )}迭代超過 50M 項會返回以下時間:alix@local:~/Go/src$ go versiongo version go1.3.3 linux/amd64alix@local:~/Go/src$ go run b.go a: 1.195424429s b: 68.588488ms diff: 17.777154632611037我想知道,為什么與切片相比,迭代地圖的速度幾乎慢 20 倍?
查看完整描述

2 回答

  • 2 回答
  • 0 關注
  • 196 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號