相关疑难解决方法(0)

golang切片分配性能

在查看GO中的内存分配性能时,我偶然发现了一件有趣的事情.

package main

import (
      "fmt"
      "time"
    )

func main(){
   const alloc int = 65536
   now := time.Now()
   loop := 50000
   for i := 0; i<loop;i++{
      sl := make([]byte, alloc)
      i += len(sl) * 0
   }
   elpased := time.Since(now)
   fmt.Printf("took %s to allocate %d bytes %d times", elpased, alloc, loop) 
}
Run Code Online (Sandbox Code Playgroud)

我在Core-i7 2600上运行这个版本的1.6版本64位(在32位也是相同的结果)和16GB的RAM(在WINDOWS 10上)所以当alloc为65536(正好是64K)时它会运行30秒(!!!! ).当alloc为65535时,需要大约200ms.有人可以向我解释一下吗?我在家里用我的核心i7-920 @ 3.8GHZ尝试了相同的代码,但它没有显示相同的结果(两者都花了大约200ms).任何人都知道发生了什么事?

memory performance go

5
推荐指数
1
解决办法
972
查看次数

标签 统计

go ×1

memory ×1

performance ×1