摘要: "原文链接" 什么是逃逸分析 逃逸分析(Escape Analysis)是Go在编译程序时执行的过程, 由编译器通过分析, 决定变量应当分配在栈上还是堆上. 在编译中进行逃逸分析 目前有代码如下: 通过在编译时增加gcflags参数, 使用类似如下命令编译: 然后获得输出如下: 这些信息,表明 Ge 阅读全文
posted @ 2020-05-07 17:20 Ethan.Tang 阅读(544) 评论(0) 推荐(0) 编辑
摘要: "原文链接" map 的基本构成 map的实现文件为 . 它的基本结构是一个HashMap,实现方式为哈希桶, 根据key将数据散列到不同的桶中,每个桶中有固定的8个键值对. 桶尾部可以挂载额外的桶(overflow buckets). 由结构可知, Go map的访问复杂度为O(1), 假设哈希函 阅读全文
posted @ 2020-05-07 17:19 Ethan.Tang 阅读(581) 评论(0) 推荐(0) 编辑
摘要: 我的 "原文链接" 源文件: runtime/slice.go slice 是一个连续的内存结构, 由3部分组成: 内存区域, 长度 和 可用长度(cap): make 创建一个slice, 实际上有3个参数: 当省略参数cap时,默认cap=len cap决定了实际分配内存区域的大小, 在进行 a 阅读全文
posted @ 2020-05-07 17:17 Ethan.Tang 阅读(226) 评论(0) 推荐(0) 编辑