您可能在这里遭受“过早优化”综合症。语言规范 没有 说明将如何精确分配分配的内存
make()。
例如,一个合格的Go实现可能会对功能进行彻底的分析,
make([]foo, ...)并证明:
- 返回的切片值不会转义函数的范围。
append()
未在此分片值上调用。- 切片值,它没有传递给任何调用的函数。
在这种情况下,可以在堆栈上直接分配片的后备存储。
当然,我正在汇总,但再次说明,此语言的语义未在语言规范中声明。目前,有两种成熟的Go实施(一种起源于Google,被称为
gc和
gccgo),还有更多的实现(
llvmgo似乎有很多机会实现),而且它们都有其独特之处。
因此,请考虑
pprof总体上阅读和Go分析,并进行个人资料示例(但实际)代码。
在邮件列表中搜索单词“ profile”,“
profiling”,“ heap AND profile”,“ CPU AND profile”和“ pprof”将为您提供很多见解。
也考虑这个和这个。



