MST

星途 面试题库

面试题:Go函数底层性能优化之中等难度

在Go函数中,经常使用的减少内存分配从而优化性能的方式有哪些?请至少列举两种并简要说明原理。
27.6万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
  • 使用对象池(sync.Pool)
    • 原理:sync.Pool 是Go语言标准库提供的对象池。它可以缓存暂时不用的对象,避免频繁的内存分配与释放。当需要新对象时,优先从对象池中获取;使用完毕后,将对象放回对象池,供后续使用。这样减少了垃圾回收的压力,提高了内存使用效率。例如在高并发场景下频繁创建与销毁临时对象,使用对象池可以复用这些对象,减少内存分配开销。
  • 预先分配切片容量
    • 原理:Go语言中切片在容量不足时会自动扩容,扩容过程涉及内存的重新分配和数据拷贝。通过预先使用 make 函数指定切片的容量,可以避免在元素追加过程中频繁扩容,减少内存分配次数。例如 s := make([]int, 0, 100),预先分配了可容纳100个 int 类型元素的空间,后续追加元素时只要不超过这个容量,就不会触发内存重新分配。