面试题答案
一键面试slice扩容机制
- 扩容触发时机:当向slice中添加元素时,如果当前slice的容量不足以容纳新元素,就会触发扩容。
- 扩容策略:
- 如果当前slice的长度小于1024,新容量将是原容量的2倍。
- 如果当前slice的长度大于或等于1024,新容量会增加原容量的1/4。
- 扩容后会重新分配内存,将原slice的数据复制到新的内存地址。
扩容对性能的影响
- 内存分配与复制开销:扩容时需要重新分配内存,并将原数据复制到新的内存空间,这涉及到内存分配和数据复制操作。内存分配可能涉及系统调用,数据复制会占用CPU资源,这都增加了时间和空间开销,在数据量较大时,性能影响更为显著。
- 缓存命中率降低:重新分配内存后,新的内存地址可能与原地址不在同一缓存行或缓存页,导致缓存命中率降低,从而增加从内存读取数据的时间,影响程序整体性能。