Go语言基础(四) | 青训营笔记

97 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天

一、本堂课重点内容

本堂课的知识要点有哪些?

高性能Go语言发行版优化和落地实践

  • 优化
    • 内存管理优化
    • 编译器优化
  • 背景
    • 自动内存管理和Go内存管理机制
    • 编译器优化的基本问题和思路

二、详细知识点介绍

本堂课介绍了哪些知识点?

追求极致性能

  • 性能优化是什么?
    • 提升软件系统处理能力,减少不必要的消耗,充分发掘计算机算力
  • 为什么要做性能优化?
    • 用户体验:带来用户体验的提升
    • 资源高效利用:降低成本,提高效率

性能优化的层面

  • 业务代码
    • 业务层优化
      • 针对特定场景,具体问题,具体分析
      • 容易获得较大性能收益
  • SDK
  • 基础库
  • 语言运行时
    • 语言运行时优化
      • 解决更通用的性能问题
      • 考虑更多场景
      • Tradeoffs
    • 数据驱动
      • 自动化性能分析工具 pprof
      • 依靠数据而非猜测
      • 首先优化最大瓶颈
  • OS

自动内存管理

  • 动态内存

  • 自动内存管理(垃圾回收):由程序语言的运行时系统管理动态内存

  • 三个任务

    • 为新对象分配空间
    • 找到存活对象
    • 回收死亡对象的内存空间
  • 相关概念

    • Auto memory management: 自动内存管理

    • Grabage collction: 垃圾回收

    • Mutator: 业务线程

    • Collector: GC 线程

    • Concurrent GC: 并发 GC

    • Parallel GC: 并行 GC

    • Tracing garbage collection: 追踪垃圾回收

    • Copying GC: 复制对象 GC

    • Mark-sweep GC: 标记-清理 GC

    • Mark-compact GC: 标记-压缩 GC

    • Reference counting: 引用计数

    • Generational GC: 分代 GC

  • 追踪垃圾回收

  • 分代GC

  • 引用计数

Go内存管理及优化

  • Go内存分配- 分块
  • Go内存分配- 缓存
  • Go内存管理优化
  • Balanced GC

编译器和静态分析

  • 编译器的结构
  • 静态分析
  • 过程内分析和过程简分析

Go编译器优化

  • 函数内联
  • 逃逸分析
  • Beast Mode 性能收益

实践准备 (必须)

  • Balanced GC 优化对象分配
  • Beast mode 提升代码性能

三、引用参考