C++性能调优

mkdir build && cd build

cmake -DCMAKE_CXX_COMPILER="%VCINSTALLDIR%/bin/cl.exe" -DCMAKE_CXX_INCLUDE_WHAT_YOU_USE="/mnt/include-what-you-use/build/bin/include-what-you-use" -G Ninja ..

export IWYU_BINARY=/mnt/include-what-you-use/build/bin/include-what-you-use

python3 /mnt/include-what-you-use/iwyu_tool.py -j 8 -p .> iwyu.out

python3 /mnt/include-what-you-use/fix_includes.py -b --comments --update_comments < iwyu.out

clang -pg -lstdc++ -o ./cmake/test ./cmake/cmake.cpp -lc_p

./cmake/test

gprof -b -qfunc1 fic_untilTool_test gmon.out>gmon.txt

gprof -b test gmon.out -Ffunc1 -efuncTest >gmon.txt

kprof -f ./test

gprof ./test | gprof2dot.py | xdot

-b 不显示描述

-A 显示函数源码

-pa 只打印a的flat profile,-Pa只屏蔽a

-qa 只打印a的call,-Qa只屏蔽a

sprof ./module.so Perf.profile -p >log.txt

time ./program

gcov ./summer-proj覆盖测试

gprof ./Perf | gprof2dot.py | dot -Tpng -o output.png

cd gprof2dot && cat ../bin/gmon.txt | python3 gprof2dot.py -n0 -e0 | dot -Tpdf -o output.pdf

编译开关-ftest-coverage -fprofile-arcs

改run.sh 换行类型

apt-get install ./libimagequant0_2.12.2-1.1_amd64.deb

apt-get install ./libimagequant-dev_2.12.2-1.1_amd64.deb

dpkg-deb -c quantum6.deb

泄露分析,编译链接-g

valgrind --tool=memcheck --leak-check=full --show-leak-kinds=all ./bin/Perf

valgrind --tool=callgrind ../bin/Perf

python gprof2dot.py -f callgrind -n10 -s callgrind.out.31113 | dot -Tpng -o valgrind.png

pprof安装

export CPUPROFILE_FREQUENCY=1

go install github.com/google/pprof@latest

pprof --text ./Perf test_capture.prof > profile.txt

pprof --callgrind ./Perf test_capture.prof > callgrind.res

pprof ./Perf test_capture.prof --web

pprof ./Perf test_capture.prof --pdf > prof.pdf

查看-pg是否生效

-lc_p

nm libobjectmodule.so | grep mcount

ldd ./Perf | grep libc

apt-get install libpopt-dev

apt-get install libiberty-dev

apt-get install libfdt-dev

#Recommended profilers¶

VerySleepy (Windows only)

HotSpot (Linux only)

Xcode Instruments (macOS only)


创作不易,小小的支持一下吧!

相关推荐
wo_jack1 小时前
C++ 入门笔记(十六):第16课 vector 模拟实现十问十答 —— 从三指针到迭代器失效
c++·后端·面试·stl·vector
D e re k ZH1 小时前
C++ 标准库算法全景指南
数据结构·c++·算法
冻柠檬飞冰走茶2 小时前
字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)
c语言·开发语言·数据结构·算法·动态规划
FRing032 小时前
vue2干货总结7(自定义指令、插槽、单页应用程序、路由的使用(VueRouter))
开发语言·前端·vue.js·vue2
雪落漂泊3 小时前
C++算法 二分查找篇(上)
开发语言·c++·算法
波力海苔夹心脆6754 小时前
C# WPF 资源字典详解:ResourceDictionary、MergedDictionaries 与自定义控件案例
开发语言·c#·wpf·入门教程·resource·资源字典
不会算法的笨小孩4 小时前
异常的使用以及会出现的问题
开发语言·c++·c++11·异常
Hhy_11076 小时前
《C++深度解构06》手撕 string —— 从底层内存管理到深浅拷贝彻底吃透
c语言·开发语言·c++·学习·visual studio
starzy19906 小时前
深入理解Scala函数定义:从方法到函数的类型跨越
开发语言·scala
starzy19906 小时前
深入理解Scala递归函数:从栈溢出到尾调用优化
开发语言·scala