网站首页 软件下载 游戏下载 翻译软件 电子书下载 电影下载 电视剧下载 教程攻略
书名 | GO语言高效编程:原理、可观测性与优化 |
分类 | 教育考试-考试-计算机类 |
作者 | [波兰]巴特洛米·普洛特卡(Bartlomiej Plotka) |
出版社 | 机械工业出版社 |
下载 | ![]() |
简介 | 编辑推荐 本书将带你穿梭于现代软件架构与操作系统中CPU与内存的奇妙世界,从Go的基础知识到高级特性与优化妙招,将被一一揭晓。书中还会介绍针对特定用例的优化之道,以及各种可观测工具,比如度量指标、日志、追踪和用于效率提升的“大杀器”——性能剖析(Profiling)。最后,从商业逻辑视角来看软件优化的很好时机,确保所有的努力既实际又高效。 内容推荐 虽然技术在进步,硬件也越来越物美价廉,但如今软件工程师仍需要关注程序的性能优化。本书将介绍软件效率问题、Go语言快速入门知识、如何实现高效编程,告诉大家如何高效进行性能优化,以及何时进行,并给出需要的工具和相关知识,让你使用较少的资源实现高效编程。 目录 目录 前言1 第1章 软件效率很重要9 1.1 性能的深意11 1.2 效率的常见误区14 1.2.1 误区1:优化后的代码可读性差14 1.2.2 误区2:YAGNI原则20 1.2.3 误区3:硬件变得更快、更廉价22 1.2.4 误区4:使用水平扩展29 1.2.5 误区5:尽快投入市场32 1.3 效率优先35 1.4 本章小结36 第2章 初识Go语言37 2.1 Go基础知识38 2.1.1 Go语言形态38 2.1.2 Go简化代码库39 2.1.3 Go是谷歌的开源项目40 2.1.4 核心设计原则41 2.1.5 包和模块42 2.1.6 Go如何管理依赖43 2.1.7 一致的工具46 2.1.8错误处理47 2.1.9语言生态50 2.1.10移除未使用的import和变量51 2.1.11单元测试和表测试52 2.2 高级语言元素54 2.2.1做好代码文档54 2.2.2向后兼容性和可移植性56 2.2.3 Go运行时57 2.2.4面向对象编程58 2.2.5泛型61 2.3 Go“快”吗64 2.4 本章小结66 第3章 征服效率68 3.1 对“优化”的思考69 3.1.1 合理的优化70 3.1.2 慎重的优化72 3.2 优化挑战74 3.3 了解你的目标76 3.3.1 应该形式化效率要求78 3.3.2 资源感知的效率要求80 3.3.3 获取和评估效率目标83 3.3.4 定义RAER的示例84 3.4 合理解决效率问题87 3.5 优化设计层级90 3.6 效率感知的开发流程94 3.6.1功能阶段95 3.6.2效率阶段97 3.7 本章小结99 第4章 Go如何使用CPU资源101 4.1 现代计算机架构中的CPU102 4.2 汇编语言104 4.3 了解Go编译器107 4.4 CPU和内存墙问题113 4.4.1 分层缓存系统115 4.4.2 流水线和乱序执行116 4.4.3 超线程118 4.5 调度器120 4.5.1 操作系统调度器120 4.5.2 Go运行时调度器124 4.6 何时使用并发130 4.7 本章小结131 第5章 Go如何使用内存资源133 5.1 内存的相关背景134 5.2 是否有内存问题135 5.3 物理内存136 5.4 操作系统内存管理机制139 5.4.1 虚拟内存140 5.4.2 mmap系统调用144 5.4.3 操作系统内存映射149 5.5 Go内存管理机制152 5.5.1 值、指针和内存块156 5.5.2 Go内存分配器160 5.5.3 垃圾收集164 5.6 本章小结169 第6章 效率可观测性170 6.1 可观测性171 6.2 针对延迟的插桩示例174 6.2.1 日志175 6.2.2 追踪180 6.2.3 指标185 6.3 效率指标语义191 6.3.1 延迟192 6.3.2 CPU使用情况198 6.3.3 内存使用情况202 6.4 本章小结205 第7章 数据驱动的效率评估206 7.1 复杂度分析207 7.1.1 效率复杂度预估207 7.1.2 渐近复杂度的近似预估209 7.1.3复杂度分析实践212 7.2 基准测试的艺术215 7.2.1与功能测试的对比217 7.2.2基准测试谎言219 7.3 实验的可靠性220 7.3.1人为错误221 7.3.2重现生产环境222 7.3.3性能的不确定性224 7.4 基准测试级别229 7.4.1生产环境中的基准测试231 7.4.2宏基准测试231 7.4.3微基准测试232 7.4.4 正确使用基准测试233 7.5 本章小结235 第8章 基准测试实践236 8.1 微基准测试详述236 8.1.1 Go基准测试238 8.1.2 基准测试结果分析243 8.2 微基准测试技巧247 8.2.1结果方差分析247 8.2.2 确定工作流程247 8.2.3确保结果正确249 8.2.4分享基准测试251 8.2.5 进行不同的基准测试254 8.2.6微基准测试与内存管理256 8.2.7 微基准测试与编译器优化257 8.3 宏基准测试详述261 8.3.1基础知识262 8.3.2 Go e2e 框架265 8.3.3理解并观测结果270 8.4 常见的宏基准测试工作流程277 8.5本章小结279 第9章 数据驱动的瓶颈分析280 9.1 效率根因分析281 9.2 Go中的性能剖析281 9.2.1 pprof格式282 9.2.2 go tool pprof 报告290 9.3 捕获性能剖析信号302 9.4 常用性能剖析插桩306 9.4.1 堆307 9.4.2 goroutine310 9.4.3 CPU312 9.4.4 off-CPU时间314 9.5 技巧317 9.5.1 共享性能剖析317 9.5.2 持续性能剖析318 9.5.3 比较和聚合性能剖析322 9.6 本章小结323 第10章 优化示例324 10.1 Sum示例325 10.2 优化延迟326 10.2.1 优化bytes.Split328 10.2.2 优化runtime.slicebytetostring330 10.2.3 优化strconv.Parse333 10.3 优化内存使用335 10.3.1 转向流式算法336 10.3.2 优化bufio.Scanner337 10.4 使用并发优化延迟342 10.4.1 朴素的并发342 10.4.2 分布式工作者模式344 10.4.3 不需要协调的工作者模式(任务分片)346 10.4.4 流式、分片的工作者模式348 10.5 额外技巧:打破常规思维351 10.6 本章小结352 第11章 优化模式353 11.1 常见模式354 11.1.1 减少工作量354 11.1.2 以功能换效率356 11.1.3 以空间换时间356 11.1.4 以时间换空间358 11.2 3R优化法358 11.2.1 减少分配358 11.2.2 重用内存359 11.2.3 回收360 11.3 不要泄漏资源362 11.3.1 控制goroutine的生命周期364 11.3.2 可靠地关闭资源370 11.3.3 耗尽资源373 11.4 尽可能预分配376 11.5 使用数组时过度使用内存380 11.6 内存重用和池化383 11.7 本章小结391 11.8 后续计划393 附录 延迟的粗略估算396 |
随便看 |
|
霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。