小编Teh*_*inX的帖子

最小化go map的内存分配

我正在挖掘优化一些高度使用的代码.我的问题归结为以下代码片段(使用pprof list命令的内存分配复制).如您所见,所有分配都在填充地图的行中完成(第959行).

ROUTINE ======================== cart.BenchmarkMapWithOutCapacityFixVal in /.../cart_test.go
   3328966    3328966 (flat, cum) 15.50% of Total
         .          .    954:
         .          .    955:func BenchmarkMapWithOutCapacityFixVal(b *testing.B) {
         .          .    956:   for i := 0; i < b.N; i++ {
         .          .    957:       m := make(map[int]float32)
         .          .    958:       for k := 0; k < 10; k++ {
   3328966    3328966    959:           m[k] = 0.434295723423
         .          .    960:       }
         .          .    961:   }
         .          .    962:}
Run Code Online (Sandbox Code Playgroud)

这是我想要做的:我试图在(内部)循环之前分配内存,因此没有不必要的分配发生:

ROUTINE ======================== cart.BenchmarkMapWithCapacityFixVal in /.../cart_test.go
   3214263    3214263 (flat, cum) …
Run Code Online (Sandbox Code Playgroud)

memory optimization go

4
推荐指数
1
解决办法
306
查看次数

如何从 linux 交叉编译到 darwin 386?

我正在尝试使用以下方法从 linux 编译:

GOOS=darwin GOARCH=386 CGO_ENABLED=0 go build .
Run Code Online (Sandbox Code Playgroud)

但它抛出错误:

cmd/go: unsupported GOOS/GOARCH pair darwin/386
Run Code Online (Sandbox Code Playgroud)

我到处看,但似乎应该支持 darwin/386
(编译 windows/386 和 linux/386 工作正常)
(编译 darwin/amd64 工作正常)

(我什至在 Windows 上试过,但错误是一样的)

我错过了什么?

compilation darwin cross-compiling go i386

0
推荐指数
1
解决办法
398
查看次数

标签 统计

go ×2

compilation ×1

cross-compiling ×1

darwin ×1

i386 ×1

memory ×1

optimization ×1