这是我参与【第五届青训营】伴学笔记创作活动的第八天。
一、本节课的主要内容
包括四个大方面,分别是优化、背景、实践。
二、详细知识点介绍 性能优化是什么?
提升软件系统处理能力,减少不必要的消耗,充分发掘计算机算力
为什么要做性能优化?
用户体验:带来用户体验的提升一
让刷抖音更丝滑,让双十一购物不再卡顿
资源高效利用:降低成本,提高效率
很小的优化乘以海量机器会是显著的性能提升和成本节约
业务层优化
针对特定场景,具体问题,具体分析
容易获得较大性能收益
语言运行时优化
解决更通用的性能问题
考虑更多场景 Tradeoffs
数据驱动
自动化性能分析工具
pprof
依靠数据而非猜测 首先优化最大瓶颈
三、实践练习例子
过程内分析(Intra-procedural analysis)
仅在函数内部进行分析 过程间分析(Inter- procedural analysis) 考虑过程调用时参数传递和返回值的数据流和控制流
为什么过程间分析是个问题?
需要通过数据流分析得知i的具体类型,才能知道i.foo(调用的是哪 个foo() 根据i的具体类型,产生了新的控制流,A.foo(), 分析继续 过程间分析需要同时分析控制流和数据流. 联合求解,比较复杂
为什么做编译器优化
用户无感知,重新编译即可获得性能收益 通用性优化 现状 采用的优化少 编译时间较短,没有进行较复杂的代码分析和优化
编译优化的思路 场景:面向后端长期执行任务 Tradeoff:用编译时间换取更高效的机器码 Beast mode 函数内联 逃逸分析 默认栈大小调整 边界检查消除 循环展开
四。、课后个人总结
学完课程后,让我对Go语言优化与落地实践有了更加清晰和深刻的理解。对后端这个岗位有了更清晰的了解。了解到了后端发展的历程,扩宽了我的知识面。