主页

c++ 性能优化资源

链接 类别 推荐理由 业务可用性 https://www.brendangregg.com/perf.html 性能分析工具 linux perf大佬brendangregg官方网站 ⭐️⭐️⭐️⭐️⭐️ 强烈推荐 https://perfetto.dev/ 性能分析工具 Android和Chrome内置性能分析平台 ⭐️⭐️⭐️⭐️⭐️ 强烈推荐 https://github.com/google/benchmark Benchmark Googl...

阅读更多

c++ conan 配置以来

1. conan 的建议 https://docs.conan.io/1/cheatsheet.html 版本控制、修订记录和依赖解析应该在整个公司保持一致。 所有开发者的配置需要保持同步,尤其是软件包id计算模式。在CI/CD系统中,应该始终使用lock文件,以保证构建的可重现性。 2. conan的配置 设置settings https://docs.conan.io/1/reference/conanfile/attributes.html class HelloConan(ConanFile): settings = {"os": ["Windows"], "compiler": {"Visual Studio": {"version": [1...

阅读更多

利用gperftools 查找热点

编译运行 嵌入式端生成采样结果 .prof.x 文件 PC端分析采样结果 gperf tools 安装 sudo apt-get install perl graphviz ghostscript gv 生成函数调用关系图cpu.pdf https://www.cnblogs.com/caosiyang/archive/2013/01/25/2876244.html 从函数调用关系图里面找到样本比例占用较高的函数 参考文献 https://zhuanlan.zhihu.com/p/343231398?utm_source=ZHShareTargetIDMore&utm_medium=social&utm_oi=1022619091906961408 htt...

阅读更多

性能优化工具

perf工具 火焰图分析 y轴:调用栈深度,火焰高度表示调用栈的深度。 x轴:函数采样数,宽度表示函数被采样到的次数,即消耗的资源多少。 常用的分析流程 检查线程采样点占比,火焰图最底层即为特定线程名的资源占比,让同名线程绘制到一起 检查火焰图的平顶 函数执行CPU消耗较高,如RLECompress函数,存在大量计算操作 函数执行次数较多,比如线程数量较多时,线程的频繁切换会导致schedule()消耗较高 常用的指令 抓取所有进程包含主进程的火焰图 抓取火焰图前执行 perf top -a 抓取全局火焰图 在线调试 监控全局CPU函数热点:./perf top -a -...

阅读更多

内存泄漏定位

1 初步确认内存泄漏 在进行长期稳定的测试的时候,定期查看内存使用情况,初步确定是否存在,一般需要较长时间的稳定测试 1.1 linux free 命令 https://blog.csdn.net/qq_35462323/article/details/105724468 执行free 命令可以得到系统当前内存的情况 此时所有的数据默认都是 KB,如果想要得到MB, 则输入free -m #free -m total used free shared buffers cached Mem: 16081 15285 796 0 154...

阅读更多

get post 有什么区别

GET 用于获取资源,请求参数附加在 URL 中,明文传输,有长度限制,可以被缓存和书签化。 POST 用于提交数据并请求处理,请求参数包含在请求体中,密文传输,没有长度限制,不会被缓存和书签化。

阅读更多

perf和火焰图

perf 环境 保证内核开启CONFIG_PERF_EVENTS sysctl -a | grep -i "perf"命令查看perf是否开启 $ sysctl -a | grep -i "perf" kernel.perf_cpu_time_max_percent = 25 kernel.perf_event_max_contexts_per_stack = 8 kernel.perf_event_max_sample_rate = 100000 kernel.perf_event_max_stack = 127 kernel.perf_event_mlock_kb = 516 kernel.perf_event_paranoid = 3 手动执行过程 采样进程的信息 使用...

阅读更多

perf 原理

引入 《性能之巅》作者 Brendan Gregg 发明的火焰图 示例代码 void loop() { for (int i = 0; i < 10000000; i++) { int j = i * i; } } static const int ROWS = 2000; // 行数 static const int COLS = 4096; // 列数 static int arr[ROWS][COLS]; // 二维数组 void high_miss(void) { int sum = 0; for (int c = 0; c < COLS; c++) { for (int r = 0; r < ROWS; ...

阅读更多