4. 程序性能的分析
时间的测量
1 |
|
但是多次查看系统时间会导致程序明显变慢
常用的工具 profiling tools
perf 指令会显示某些节点花费的时间、cpu占用等性能
或者在linux 下,可以考虑使用 time prog 指令,该指令会在命令行输出一行 后面的prog 内容加上 各个部分占用的时间以及cpu占用量
1 | 1.60s user 0.03s system 95% cpu 1.711 total |
- user: 程序占用时间
- system: 系统执行该程序使用的额外时间
- elapsed: 从开始打表到结束打表所经过的时间差,会包含期间其他进程占用的时间
- cpu: 程序的 cpu 占用量,计算公式
内存分配工具 valgrind
指令 valgrind ./prog -args 如果使用flag --leak-check=full --show-leak-kinds=all 就会详细的查找所有种类的内存泄漏可能
如果想要查看泄漏的原因,通过 -g3 将调试模式开到最大档之后来检查泄漏的原因,得到的信息可能会更加丰富
exit()指令和内存销毁
对于一个良好的 STL 容器,一般会自带内存申请和销毁的工具,但是如果在使用 exit 的时候有某些 容器已经拥有一定的数据,这样程序会直接退出而不会调用其析构函数,从而导致内存泄漏,所以使用exit的时候一定要注意是否有容器有数据残留
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
