CppGuide社区 CppGuide社区
首页
  • 🔥最新谷歌C++风格指南(含C++17/20)
  • 🔥C++17详解
  • 🔥C++20完全指南
  • 🔥C++23快速入门
🔥C++面试
  • 第1章 C++ 惯用法与Modern C++篇
  • 第2章 C++开发工具与调试进阶
  • 第3章 C++多线程编程从入门到进阶
  • 第4章 C++网络编程重难点解析
  • 第5章 网络通信故障排查常用命令
  • 第6章 网络通信协议设计
  • 第7章 高性能服务结构设计
  • 第8章 Redis网络通信模块源码分析
  • 第9章 服务其他模块设计
  • 🚀 全部章节.pdf 下载 (opens new window)
  • 🔥C++游戏编程入门(零基础学C++)
  • 🔥使用C++17从零开发一个调试器 (opens new window)
  • 🔥使用C++20从零构建一个完整的低延迟交易系统 (opens new window)
  • 🔥使用C++从零写一个C语言编译器 (opens new window)
  • 🔥从零用C语言写一个Redis
  • leveldb源码分析
  • libevent源码分析
  • Memcached源码分析
  • TeamTalk源码分析
  • 优质源码分享 (opens new window)
  • 🔥远程控制软件gh0st源码分析
  • 🔥Windows 10系统编程
  • 🔥Linux 5.x内核开发与调试 完全指南 (opens new window)
  • TCP源码实现超详细注释版.pdf (opens new window)
  • 高效Go并发编程
  • Go性能调优
  • Go项目架构设计
  • 🔥使用Go从零开发一个数据库
  • 🔥使用Go从零开发一个编译器 (opens new window)
  • 🔥使用Go从零开发一个解释器 (opens new window)
Rust编程指南
  • SQL零基础指南
  • MySQL开发与调试指南
GitHub (opens new window)
首页
  • 🔥最新谷歌C++风格指南(含C++17/20)
  • 🔥C++17详解
  • 🔥C++20完全指南
  • 🔥C++23快速入门
🔥C++面试
  • 第1章 C++ 惯用法与Modern C++篇
  • 第2章 C++开发工具与调试进阶
  • 第3章 C++多线程编程从入门到进阶
  • 第4章 C++网络编程重难点解析
  • 第5章 网络通信故障排查常用命令
  • 第6章 网络通信协议设计
  • 第7章 高性能服务结构设计
  • 第8章 Redis网络通信模块源码分析
  • 第9章 服务其他模块设计
  • 🚀 全部章节.pdf 下载 (opens new window)
  • 🔥C++游戏编程入门(零基础学C++)
  • 🔥使用C++17从零开发一个调试器 (opens new window)
  • 🔥使用C++20从零构建一个完整的低延迟交易系统 (opens new window)
  • 🔥使用C++从零写一个C语言编译器 (opens new window)
  • 🔥从零用C语言写一个Redis
  • leveldb源码分析
  • libevent源码分析
  • Memcached源码分析
  • TeamTalk源码分析
  • 优质源码分享 (opens new window)
  • 🔥远程控制软件gh0st源码分析
  • 🔥Windows 10系统编程
  • 🔥Linux 5.x内核开发与调试 完全指南 (opens new window)
  • TCP源码实现超详细注释版.pdf (opens new window)
  • 高效Go并发编程
  • Go性能调优
  • Go项目架构设计
  • 🔥使用Go从零开发一个数据库
  • 🔥使用Go从零开发一个编译器 (opens new window)
  • 🔥使用Go从零开发一个解释器 (opens new window)
Rust编程指南
  • SQL零基础指南
  • MySQL开发与调试指南
GitHub (opens new window)
  • Go性能调优 说明
    • Go性能调优 说明
    • 目标读者
    • 目录
  • 1. Go语言性能导论
  • 2 数据结构与算法
  • 3 理解并发
  • 4 Go语言中的等效标准模板库算法
  • 5 Go语言中的矩阵和向量计算
  • 6 编写易读的Go代码
  • 7 Go语言中的模板编程
  • 8 Go语言中的内存管理
  • 9 Go语言中的GPU并行化
  • 10 Go语言中的编译时评估
  • 11. 构建和部署Go代码
  • 12 Go代码性能分析
  • 13 跟踪Go代码
  • 14 集群与作业队列
  • 15 跨版本比较代码质量
目录

Go性能调优 说明

# 前言

Page Views Count (opens new window)

# Go性能调优 说明

《Go性能调优》是一本完备的资源书籍,书中包含经过验证的方法和技巧,可帮助你诊断并解决Go应用程序中的性能问题。本书开篇介绍性能相关概念,你将从中了解Go语言性能背后的理念。接下来,你会学习如何高效地实现Go语言的数据结构和算法,并探索数据操作与组织方式,以便编写可扩展软件的程序。用于实现并行和并发的通道(Channels)和协程(goroutines),也是编写分布式系统高性能代码的核心部分,这部分内容在本书中也有涉及。随后,你将学习如何有效地管理内存。你还会探索统一计算设备架构(Compute Unified Device Architecture,CUDA)驱动应用程序编程接口(API),学习使用容器构建Go代码,并利用Go构建缓存以加快编译速度。你将清晰了解如何对Go代码进行分析和追踪,从而检测系统中的瓶颈。在本书结尾,你将评估集群和作业队列以优化性能,并监控应用程序以防性能退化。

本文为《Hands-on high performance with Go》的译本,首发于 cppguide.cn (opens new window)。

限于水平有限,如果您在阅读过程中有任何问题,可以联系小方(微信cppxiaofang),也欢迎加入小方的 技术交流群,群里面有很多技术高手,不定期发布招聘信息,加群请备注“加微信群”。

小方微信公众号【CppGuide】:

img

# 目标读者

本书是对Go编程有中高级理解、且有兴趣提升代码执行速度的开发者和专业人士的必备读物。

# 目录

  • 前言
  • 第一部分:Go语言性能学习
    • 第1章:Go语言性能入门
      • 技术要求
      • 理解计算机科学中的性能
        • 大O符号简要介绍
        • 衡量长期性能的方法
          • 优化策略概述
        • 优化级别
      • Go语言简史
        • Go标准库
        • Go工具集
          • 基准测试概述
      • Go语言性能背后的理念
      • 协程——从一开始就具备的性能优势
      • 通道——一种类型化的管道
      • 媲美C语言的性能
      • 大规模分布式系统
      • 总结
    • 第2章:数据结构与算法
      • 理解基准测试
        • 基准测试执行
        • 实际应用中的基准测试
      • 介绍大O符号
        • 大O符号的实际示例
        • 数据结构操作与时间复杂度
        • O(1)——常数时间
        • O(log n)——对数时间
        • O(n)——线性时间
        • O(n log n)——准线性时间
        • O(n²)——平方时间
        • O(2ⁿ)——指数时间
      • 理解排序算法
        • 插入排序
        • 堆排序
        • 归并排序
        • 快速排序
      • 理解搜索算法
        • 线性搜索
        • 二分搜索
      • 探索树结构
        • 二叉树
        • 双向链表
      • 探索队列
        • 常见队列模式
        • 常见队列函数
      • 总结
    • 第3章:理解并发
      • 理解闭包
        • 匿名函数
        • 与闭包相关的匿名函数
        • 用于嵌套和延迟工作的闭包
        • 带有闭包的HTTP处理程序
      • 探索协程(Goroutines)
        • Go调度器
        • Go调度器中协程的内部机制
          • M结构体
          • P结构体
          • G结构体
        • 协程的实际应用
      • 介绍通道(Channels)
        • 通道的内部机制
        • 带缓冲的通道
          • 遍历通道(Ranges over channels)
        • 无缓冲的通道
          • select语句
      • 信号量(Semaphores)介绍
      • 理解等待组(WaitGroups)
      • 迭代器与迭代过程
      • 生成器简介
      • 总结
    • 第4章:Go语言中的等效标准模板库算法
      • 理解标准模板库中的算法
        • 排序(Sort)
        • 反转(Reverse)
        • 最小元素和最大元素(Min element and max element)
        • 二分搜索(Binary search)
      • 理解容器
        • 序列容器
          • 数组(Array)
          • 双端队列(Deque)
          • 链表(List)
          • 单向列表(Forward list)
        • 容器适配器
          • 队列(Queue)
          • 优先队列(Priority queue)
          • 栈(Stack)
        • 关联容器
          • 集合(Set)
          • 多重集合(Multiset)
          • 映射(Map)
          • 多重映射(Multimap)
      • 理解函数对象
        • 仿函数(Functors)
        • 迭代器
          • 内部迭代器(Internal iterators)
          • 外部迭代器(External iterators)
          • 生成器(Generators)
          • 隐式迭代器(Implicit Iterators)
      • 总结
    • 第5章:Go语言中的矩阵和向量计算
      • 介绍Gonum和稀疏库(Sparse library)
      • 介绍基本线性代数子程序库(BLAS)
      • 介绍向量(Vectors)
        • 向量计算
      • 介绍矩阵(Matrices)
      • 矩阵运算
        • 矩阵加法
          • 实际示例(矩阵减法)
        • 标量乘法
        • 标量乘法实际示例
        • 矩阵乘法
        • 矩阵乘法实际示例
        • 矩阵转置
        • 矩阵转置实际示例
      • 理解矩阵结构
        • 稠密矩阵(Dense matrices)
        • 稀疏矩阵(Sparse matrices)
          • 基于字典的稀疏矩阵(DOK matrix)
          • 按行索引的链表稀疏矩阵(LIL matrix)
        • 坐标格式稀疏矩阵(COO matrix)
          • 压缩稀疏行矩阵(CSR matrix)
          • 压缩稀疏列矩阵(CSC matrix)
      • 总结
  • 第二部分:在Go语言中应用性能概念
    • 第6章:编写可读性强的Go代码
      • 保持Go代码的简洁性
      • 保持Go代码的可读性
      • 探索Go语言中的包(Packaging)
        • 包命名
        • 包布局
        • 内部包
        • 供应商目录(Vendor directory)
        • Go模块(Go modules)
      • 理解Go语言中的命名
      • 理解Go语言中的格式化
      • Go语言接口简介
      • 理解Go语言中的方法
      • 理解Go语言中的继承
      • 探索Go语言中的反射(Reflection)
        • 类型(Types)
        • 种类(Kinds)
        • 值(Values)
      • 总结
    • 第7章:Go语言中的模板编程
      • 理解Go generate
      • 用于Protocol Buffers的生成代码
      • Protocol Buffers代码结果
      • 链接工具链
      • 介绍用于配置编程的Cobra和Viper
      • Cobra/Viper的结果集
      • 文本模板(Text templating)
      • HTML模板(HTML templating)
      • 探索Sprig
        • 字符串函数
        • 字符串切片函数
        • 默认函数
      • 总结
    • 第8章:Go语言中的内存管理
      • 现代计算机内存理解——入门
      • 内存分配
      • 介绍虚拟内存大小(VSZ)和常驻集大小(RSS)
      • 理解内存利用
      • Go运行时内存分配
        • 内存分配入门
        • 内存对象分配
      • 有限内存情况简介
      • 总结
    • 第9章:Go语言中的GPU并行化
      • Cgo——在Go语言中编写C代码
        • 一个简单的Cgo示例
      • GPU加速计算——利用硬件
        • CUDA——利用主机进程
        • 用于支持GPU编程的Docker
      • 在谷歌云平台(GCP)上使用CUDA
        • 创建带GPU的虚拟机
        • 安装CUDA驱动程序
        • 在GCP上安装Docker社区版(Docker CE)
        • 在GCP上安装NVIDIA Docker
        • 将所有操作编写成脚本
      • CUDA——为程序提供赋能
      • 总结
    • 第10章:Go语言中的编译时评估
      • 探索Go运行时
        • GODEBUG
        • GCTRACE
        • GOGC
        • GOMAXPROCS
        • GOTRACEBACK
        • Go构建缓存
        • 管理依赖项(Vendoring dependencies)
        • 缓存和依赖项管理的改进
        • 调试(Debug)
        • PProf/race/trace
      • 理解函数
        • KeepAlive
        • NumCPU
        • ReadMemStats
      • 总结
  • 第三部分:部署、监控和迭代Go程序
    • 第11章:构建和部署Go代码
      • 构建Go二进制文件
        • Go build——构建你的Go代码
        • 构建标志(Build flags)
        • 构建信息
        • 编译器和链接器标志
        • 构建约束(Build constraints)
        • 文件名约定
        • Go clean——清理你的构建目录
      • 使用go get和go mod获取包依赖项
      • Go list
      • Go run——执行你的包
      • Go install——安装你的二进制文件
      • 使用Docker构建Go二进制文件
      • 总结
    • 第12章:分析Go代码性能
      • 理解性能分析(Profiling)
      • 探索检测方法(instrumentation methodologies)
        • 使用go test实现性能分析
        • 在代码中手动检测性能分析
        • 对运行中的服务代码进行性能分析
      • CPU性能分析简介
      • 内存性能分析简介
      • 上游pprof的扩展功能
      • 比较多个分析结果
      • 在pprof中解读火焰图
      • 检测Go语言中的内存泄漏
      • 总结
    • 第13章:跟踪Go代码
      • 实现跟踪检测
      • 理解跟踪格式
      • 理解跟踪收集
      • 跟踪窗口中的动态展示
      • 探索类似pprof的跟踪
      • Go分布式跟踪
      • 为你的应用程序实现OpenCensus
      • 总结
    • 第14章:集群和作业队列
      • Go语言中的集群
        • K近邻算法(K-nearest neighbors)
        • K均值聚类(K-means clustering)
      • 探索Go语言中的作业队列
        • 将协程用作作业队列
        • 将带缓冲的通道用作作业队列
        • 集成作业队列
          • Kafka
          • RabbitMQ
      • 总结
    • 第15章:跨版本比较代码质量
      • Go Prometheus导出器——从你的Go应用程序导出数据
      • 应用性能管理(APM)——监控分布式系统性能
        • 谷歌云环境设置
        • 谷歌云跟踪代码
      • 服务级别指标(SLIs)和服务级别目标(SLOs)——设定目标
        • 测量流量
        • 测量延迟
        • 测量错误
        • 测量饱和度
        • Grafana
      • 日志记录——跟踪数据
      • 总结
上次更新: 2025/04/08, 19:40:35
1. Go语言性能导论

1. Go语言性能导论→

最近更新
01
C++语言面试问题集锦 目录与说明
03-27
02
第四章 Lambda函数
03-27
03
第二章 关键字static及其不同用法
03-27
更多文章>
Copyright © 2024-2025 沪ICP备2023015129号 张小方 版权所有
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式