我正在挖掘优化一些高度使用的代码.我的问题归结为以下代码片段(使用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) 我正在尝试使用以下方法从 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 上试过,但错误是一样的)
我错过了什么?