交易系统热路径代码优化指南

📚 共计 30 章节
01
热路径定义与识别
什么是热路径、为什么热路径是性能瓶颈、如何通过Profiling工具(如perf、py-spy)识别热路径。
🔥 热路径perfpy-spy
02
CPU缓存友好性
CPU缓存层级结构、缓存行与伪共享问题、数据对齐与填充、使用perf stat分析缓存命中率。
🧠 缓存伪共享perf stat
03
内存分配优化
堆内存 vs 栈内存、对象池技术、减少内存碎片、使用jemalloc/tcmalloc替代glibc malloc。
📦 内存对象池jemalloc
04
锁竞争与无锁编程
锁的开销分析、读写锁 vs 互斥锁、原子操作与CAS、无锁队列实现(基于Ring Buffer)。
🔒 锁CAS无锁队列
05
分支预测与流水线
分支预测失败的开销、likely/unlikely宏、减少分支的编程技巧(查表法、算术替换)。
🔀 分支likely查表法
06
向量化与SIMD
SIMD指令集简介(SSE/AVX)、自动向量化 vs 手动向量化、使用Intel Intrinsics优化计算密集型代码。
⚡ SIMDAVXIntrinsics
07
编译器优化
O2/O3优化级别、LTO(链接时优化)、PGO(性能引导优化)、内联与函数属性。
⚙️ 编译器LTOPGO
08
数据结构选择
数组 vs 链表 vs 哈希表 vs 树、缓存局部性对数据结构的影响、B-Tree vs B+Tree在存储引擎中的应用。
📐 数据结构B+Tree局部性
09
零拷贝技术
传统IO路径 vs mmap、sendfile系统调用、DMA与Page Cache、在消息队列中的应用。
📄 零拷贝mmapsendfile
10
异步与事件驱动
Reactor模式 vs Proactor模式、epoll vs select/poll、协程与回调的性能对比。
⏳ 异步epoll协程
11
序列化与反序列化
JSON/XML/Protobuf/FlatBuffers性能对比、减少内存拷贝的序列化方案、Schema-less vs Schema-based。
📦 序列化ProtobufFlatBuffers
12
网络协议优化
TCP_NODELAY与Nagle算法、连接池与复用、TLS握手优化(Session Resumption)、HTTP/2多路复用。
🌐 网络TCP_NODELAYHTTP/2
13
数据库访问优化
连接池配置、批量操作 vs 逐条操作、索引优化与查询计划、读写分离与分库分表。
🗄️ 数据库连接池读写分离
14
日志系统优化
异步日志 vs 同步日志、日志级别动态调整、缓冲区与批量写入、避免日志成为瓶颈。
📝 日志异步批量写入
15
配置管理优化
热加载配置、配置中心 vs 本地文件、减少配置解析开销、配置缓存与版本控制。
⚙️ 配置热加载配置中心
16
GC优化(Java/Go)
GC算法对比(CMS/G1/ZGC)、减少对象分配、逃逸分析与栈上分配、GC调优参数。
♻️ GCZGC逃逸分析
17
JIT编译优化(Java)
JIT工作原理、内联缓存、去优化与重新编译、分层编译(C1/C2)。
⚡ JIT内联缓存C1/C2
18
解释器优化(Python)
Python GIL的影响、使用C扩展(Cython/Ctypes)、PyPy JIT vs CPython、异步IO与协程。
🐍 PythonGILPyPy
19
GPU加速
CUDA编程模型、数据传输优化(Pinned Memory)、Kernel Launch开销、在量化计算中的应用。
🎮 GPUCUDAPinned Memory
20
FPGA加速
FPGA vs CPU vs GPU、流水线设计、HLS(高层次综合)、在低延迟交易中的应用。
🔲 FPGAHLS低延迟
21
硬件选型
CPU频率 vs 核心数、NUMA架构与内存亲和性、网卡与RDMA、SSD vs NVMe。
🖥️ 硬件NUMARDMA
22
性能基准测试
微基准测试 vs 宏基准测试、JMH/Google Benchmark使用、统计显著性(置信区间)、避免测试陷阱。
📊 基准测试JMH置信区间
23
性能监控与告警
Prometheus + Grafana、自定义Metrics、延迟分布(Percentile)、SLA与SLO。
📈 监控PrometheusGrafana
24
代码剖析(Profiling)进阶
采样 vs 插桩、火焰图与折叠栈、Off-CPU分析、eBPF技术。
🔬 Profiling火焰图eBPF
25
持续性能优化
CI/CD中的性能回归测试、A/B测试性能、性能预算、混沌工程。
🔄 CI/CD性能预算混沌工程
26
低延迟网络
内核旁路(DPDK)、用户态协议栈、零拷贝网络、在HFT中的应用。
⚡ 低延迟DPDKHFT
27
内存数据库
Redis vs Memcached vs Aerospike、持久化与快照、集群与分片、在实时风控中的应用。
💾 内存数据库RedisAerospike
28
消息队列选型
Kafka vs Pulsar vs RabbitMQ vs ZeroMQ、吞吐量与延迟权衡、分区与消费模型。
📨 消息队列KafkaZeroMQ
29
分布式一致性
CAP理论、Paxos/Raft算法、最终一致性 vs 强一致性、在交易状态同步中的应用。
🌍 一致性RaftCAP
30
全链路压测
压测工具选型(wrk/Locust/Gatling)、流量录制与回放、性能模型建立、容量规划。
🧪 压测wrk容量规划