用途:该技能用于 C++ 性能工程,通过剖析、分析与针对性优化,让代码达到更高性能。核心准则是先测量、只优化热点、前后验证、保持可读性。
主要能力: 一、性能剖析工具。Linux perf 可记录 CPU 剖析(perf record -g ./program、perf report)、生成火焰图(perf script | stackcollapse-perf.pl | flamegraph.pl > flame.svg)、查看硬件计数器(perf stat -e cache-misses,cache-references,instructions,cycles ./program)以及针对函数剖析(perf record -g -e cycles:u --call-graph dwarf ./program)。Valgrind Callgrind 支持指令级剖析(valgrind --tool=callgrind ./program、kcachegrind callgrind.out.)和缓存模拟(valgrind --tool=cachegrind ./program、cg_annotate cachegrind.out.)。Google Benchmark 用于编写可比较的基准测试,支持复杂度分析与 DoNotOptimize、ClobberMemory 等防优化手段。
二、缓存优化。对比 AoS 与 SoA 数据布局,SoA 适合迭代访问;使用 alignas(64) 对齐避免伪共享;区分热数据与冷数据,冷数据以指针按需加载。
三、SIMD 向量化。可用 __restrict、#pragma omp simd、std::assume_aligned<32> 辅助自动向量化;也可用 immintrin.h 的 AVX 内建函数显式处理(如 _mm256_loadu_ps、_mm256_add_ps、水平求和)。
四、多线程。C++17 并行算法(std::execution::par/par_unseq)用于 sort、transform、reduce、for_each;提供线程池实现,含任务队列、条件变量与 packaged_task/future。
五、快速优化清单:reserve、emplace_back、移动而非拷贝、string_view、减少循环内分配、[[likely]]/[[unlikely]];数据布局上先看缓存未命中,再考虑 SoA、对齐与冷热分离;算法上选对容器、二分查找、查表等。
工作流程:PROFILE → IDENTIFY → OPTIMIZE → BENCHMARK → VERIFY,循环迭代。
适用场景:CPU 吞吐低、延迟抖动、内存增长、性能不稳定等问题的排查,并提供决策树(缓存未命中、分支预测失败、锁竞争、内存泄漏、NUMA 等)。
相关集成:build-engineer(优化标志)、modern-cpp-expert(移动语义)、memory-specialist(分配模式)、cpp-debugger-agent(性能调试)。
限制:资料未提供具体安装命令、收费与价格信息、支持平台与版本兼容性细节,暂未提供。