【Go语言优化与落地实践|青训营笔记】

51 阅读2分钟

这是我参与【第五届青训营】伴学笔记创作活动的第八天。

一、本节课的主要内容

包括四个大方面,分别是优化、背景、实践。

二、详细知识点介绍 性能优化是什么?

提升软件系统处理能力,减少不必要的消耗,充分发掘计算机算力

为什么要做性能优化?

用户体验:带来用户体验的提升一

让刷抖音更丝滑,让双十一购物不再卡顿

资源高效利用:降低成本,提高效率

很小的优化乘以海量机器会是显著的性能提升和成本节约

业务层优化

针对特定场景,具体问题,具体分析

容易获得较大性能收益

语言运行时优化

解决更通用的性能问题

考虑更多场景 Tradeoffs

数据驱动

自动化性能分析工具

pprof

依靠数据而非猜测 首先优化最大瓶颈

三、实践练习例子

过程内分析(Intra-procedural analysis)

仅在函数内部进行分析 过程间分析(Inter- procedural analysis) 考虑过程调用时参数传递和返回值的数据流和控制流

为什么过程间分析是个问题?

需要通过数据流分析得知i的具体类型,才能知道i.foo(调用的是哪 个foo() 根据i的具体类型,产生了新的控制流,A.foo(), 分析继续 过程间分析需要同时分析控制流和数据流. 联合求解,比较复杂

为什么做编译器优化

用户无感知,重新编译即可获得性能收益 通用性优化 现状 采用的优化少 编译时间较短,没有进行较复杂的代码分析和优化

编译优化的思路 场景:面向后端长期执行任务 Tradeoff:用编译时间换取更高效的机器码 Beast mode 函数内联 逃逸分析 默认栈大小调整 边界检查消除 循环展开

四。、课后个人总结

学完课程后,让我对Go语言优化与落地实践有了更加清晰和深刻的理解。对后端这个岗位有了更清晰的了解。了解到了后端发展的历程,扩宽了我的知识面。