2016-03-15 115 views

回答

0

從文檔的關鍵字make

地圖:一個初始分配是根據尺寸製成但 生成的地圖具有長度爲0,可以省略尺寸,在這種情況下一個 小的起始大小被分配。

因此,在地圖的情況下,使用make和使用空映射文字沒有區別。

6

make可用於使用預先分配的空間初始化地圖。它需要一個可選的第二個參數。

m0 := make(map[int]int, 1000) // allocateds space for 1000 entries

分配需要的CPU時間。如果您知道地圖上會有多少條目,您可以爲它們預先分配空間。這減少了執行時間。您可以運行一個程序來驗證這一點。

package main 

import "fmt" 
import "testing" 

func BenchmarkWithMake(b *testing.B) { 
    m0 := make(map[int]int, b.N) 
    for i := 0; i < b.N; i++ { 
     m0[i] = 1000 
    } 
} 

func BenchmarkWithLitteral(b *testing.B) { 
    m1 := map[int]int{} 
    for i := 0; i < b.N; i++ { 
     m1[i] = 1000 
    } 
} 

func main() { 
    bwm := testing.Benchmark(BenchmarkWithMake) 
    fmt.Println(bwm) // gives 176 ns/op 

    bwl := testing.Benchmark(BenchmarkWithLitteral) 
    fmt.Println(bwl) // gives 259 ns/op 
}