在Golang中,使用make vs {}初始化的地图之间是否有任何性能差异

前端之家收集整理的这篇文章主要介绍了在Golang中,使用make vs {}初始化的地图之间是否有任何性能差异前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们知道有两种方法可以初始化地图(如下所示).我想知道这两种方法之间是否存在任何性能差异.
  1. var myMap map[string]int

然后

  1. myMap = map[string]int{}

VS

  1. myMap = make(map[string]int)
在我的机器上,它们看起来大致相当.

您可以轻松地进行基准测试以进行比较.例如:

  1. package bench
  2.  
  3. import "testing"
  4.  
  5. var result map[string]int
  6.  
  7. func BenchmarkMakeLiteral(b *testing.B) {
  8. var m map[string]int
  9. for n := 0; n < b.N; n++ {
  10. m = InitMapLiteral()
  11. }
  12. result = m
  13. }
  14.  
  15. func BenchmarkMakeMake(b *testing.B) {
  16. var m map[string]int
  17. for n := 0; n < b.N; n++ {
  18. m = InitMapMake()
  19. }
  20. result = m
  21. }
  22.  
  23. func InitMapLiteral() map[string]int {
  24. return map[string]int{}
  25. }
  26.  
  27. func InitMapMake() map[string]int {
  28. return make(map[string]int)
  29. }

在3次不同的运行中产生的结果足够接近无关紧要:

第一次运行

  1. $go test -bench=.
  2. testing: warning: no tests to run
  3. PASS
  4. BenchmarkMakeLiteral-8 10000000 160 ns/op
  5. BenchmarkMakeMake-8 10000000 171 ns/op
  6. ok github.com/johnweldon/bench 3.664s

第二轮

  1. $go test -bench=.
  2. testing: warning: no tests to run
  3. PASS
  4. BenchmarkMakeLiteral-8 10000000 182 ns/op
  5. BenchmarkMakeMake-8 10000000 173 ns/op
  6. ok github.com/johnweldon/bench 3.945s

第三次运行

  1. $go test -bench=.
  2. testing: warning: no tests to run
  3. PASS
  4. BenchmarkMakeLiteral-8 10000000 170 ns/op
  5. BenchmarkMakeMake-8 10000000 170 ns/op
  6. ok github.com/johnweldon/bench 3.751s

猜你在找的Go相关文章