互联网
类型
可以朗读
语音朗读
305千字
字数
No.79
科学技术
2025-01-01
发行日期
展开全部
主编推荐语
本书旨在让你使用较少的资源实现高效编程。
内容简介
虽然技术在进步,硬件也越来越物美价廉,但如今软件工程师仍需要关注程序的性能优化。本书将介绍软件效率问题、Go语言快速入门知识、如何实现高效编程,告诉大家如何高效进行性能优化,以及何时进行,并给出需要的工具和相关知识。
目录
- 版权信息
- O'Reilly Media,Inc.介绍
- 中文版序
- 推荐序一
- 推荐序二
- 译者序
- 前言
- 第1章 软件效率很重要
- 1.1 性能的深意
- 1.2 效率的常见误区
- 1.2.1 误区1:优化后的代码可读性差
- 1.2.2 误区2:YAGNI原则
- 1.2.3 误区3:硬件变得更快、更廉价
- 1.2.4 误区4:使用水平扩展
- 1.2.5 误区5:尽快投入市场
- 1.3 效率优先
- 1.4 本章小结
- 第2章 初识Go语言
- 2.1 Go基础知识
- 2.1.1 Go语言形态
- 2.1.2 Go简化代码库
- 2.1.3 Go是谷歌的开源项目
- 2.1.4 核心设计原则
- 2.1.5 包和模块
- 2.1.6 Go如何管理依赖
- 2.1.7 一致的工具
- 2.1.8 错误处理
- 2.1.9 语言生态
- 2.1.10 移除未使用的import和变量
- 2.1.11 单元测试和表测试
- 2.2 高级语言元素
- 2.2.1 做好代码文档
- 2.2.2 向后兼容性和可移植性
- 2.2.3 Go运行时
- 2.2.4 面向对象编程
- 2.2.5 泛型
- 2.3 Go“快”吗
- 2.4 本章小结
- 第3章 征服效率
- 3.1 对“优化”的思考
- 3.1.1 合理的优化
- 3.1.2 慎重的优化
- 3.2 优化挑战
- 3.3 了解你的目标
- 3.3.1 应该形式化效率要求
- 3.3.2 资源感知的效率要求
- 3.3.3 获取和评估效率目标
- 3.3.4 定义RAER的示例
- 3.4 合理解决效率问题
- 3.5 优化设计层级
- 3.6 效率感知的开发流程
- 3.6.1 功能阶段
- 3.6.2 效率阶段
- 3.7 本章小结
- 第4章 Go如何使用CPU资源
- 4.1 现代计算机架构中的CPU
- 4.2 汇编语言
- 4.3 了解Go编译器
- 4.4 CPU和内存墙问题
- 4.4.1 分层缓存系统
- 4.4.2 流水线和乱序执行
- 4.4.3 超线程
- 4.5 调度器
- 4.5.1 操作系统调度器
- 4.5.2 Go运行时调度器
- 4.6 何时使用并发
- 4.7 本章小结
- 第5章 Go如何使用内存资源
- 5.1 内存的相关背景
- 5.2 是否有内存问题
- 5.3 物理内存
- 5.4 操作系统内存管理机制
- 5.4.1 虚拟内存
- 5.4.2 mmap系统调用
- 5.4.3 操作系统内存映射
- 5.5 Go内存管理机制
- 5.5.1 值、指针和内存块
- 5.5.2 Go内存分配器
- 5.5.3 垃圾收集
- 5.6 本章小结
- 第6章 效率可观测性
- 6.1 可观测性
- 6.2 针对延迟的插桩示例
- 6.2.1 日志
- 6.2.2 追踪
- 6.2.3 指标
- 6.3 效率指标语义
- 6.3.1 延迟
- 6.3.2 CPU使用情况
- 6.3.3 内存使用情况
- 6.4 本章小结
- 第7章 数据驱动的效率评估
- 7.1 复杂度分析
- 7.1.1 效率复杂度预估
- 7.1.2 渐近复杂度的近似预估
- 7.1.3 复杂度分析实践
- 7.2 基准测试的艺术
- 7.2.1 与功能测试的对比
- 7.2.2 基准测试谎言
- 7.3 实验的可靠性
- 7.3.1 人为错误
- 7.3.2 重现生产环境
- 7.3.3 性能的不确定性
- 7.4 基准测试级别
- 7.4.1 生产环境中的基准测试
- 7.4.2 宏基准测试
- 7.4.3 微基准测试
- 7.4.4 正确使用基准测试
- 7.5 本章小结
- 第8章 基准测试实践
- 8.1 微基准测试详述
- 8.1.1 Go基准测试
- 8.1.2 基准测试结果分析
- 8.2 微基准测试技巧
- 8.2.1 结果方差分析
- 8.2.2 确定工作流程
- 8.2.3 确保结果正确
- 8.2.4 分享基准测试
- 8.2.5 进行不同的基准测试
- 8.2.6 微基准测试与内存管理
- 8.2.7 微基准测试与编译器优化
- 8.3 宏基准测试详述
- 8.3.1 基础知识
- 8.3.2 Go e2e框架
- 8.3.3 理解并观测结果
- 8.4 常见的宏基准测试工作流程
- 8.5 本章小结
- 第9章 数据驱动的瓶颈分析
- 9.1 效率根因分析
- 9.2 Go中的性能剖析
- 9.2.1 pprof格式
- 9.2.2 go tool pprof报告
- 9.3 捕获性能剖析信号
- 9.4 常用性能剖析插桩
- 9.4.1 堆
- 9.4.2 goroutine
- 9.4.3 CPU
- 9.4.4 off-CPU时间
- 9.5 技巧
- 9.5.1 共享性能剖析
- 9.5.2 持续性能剖析
- 9.5.3 比较和聚合性能剖析
- 9.6 本章小结
- 第10章 优化示例
- 10.1 Sum示例
- 10.2 优化延迟
- 10.2.1 优化bytes.Split
- 10.2.2 优化runtime.slicebytetostring
- 10.2.3 优化strconv.Parse
- 10.3 优化内存使用
- 10.3.1 转向流式算法
- 10.3.2 优化bufio.Scanner
- 10.4 使用并发优化延迟
- 10.4.1 朴素的并发
- 10.4.2 分布式工作者模式
- 10.4.3 不需要协调的工作者模式(任务分片)
- 10.4.4 流式、分片的工作者模式
- 10.5 额外技巧:打破常规思维
- 10.6 本章小结
- 第11章 优化模式
- 11.1 常见模式
- 11.1.1 减少工作量
- 11.1.2 以功能换效率
- 11.1.3 以空间换时间
- 11.1.4 以时间换空间
- 11.2 3R优化法
- 11.2.1 减少分配
- 11.2.2 重用内存
- 11.2.3 回收
- 11.3 不要泄漏资源
- 11.3.1 控制goroutine的生命周期
- 11.3.2 可靠地关闭资源
- 11.3.3 耗尽资源
- 11.4 尽可能预分配
- 11.5 使用数组时过度使用内存
- 11.6 内存重用和池化
- 11.7 本章小结
- 11.8 后续计划
- 附录 延迟的粗略估算
- 关于作者
- 封面简介
展开全部
出版方
机械工业出版社
机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。