2010-10-05 90 views
2

我可以使用哪些免费工具来测试Linux中C++代码的性能?基本上我想识别代码的瓶颈并提高性能。我的应用程序主要涉及使用网络数据的计算代码。所以我想提高代码的执行速度。测试C++代码的性能

谢谢。

+0

你是说你需要一个好的分析工具? OProfile也许,valgrind工具? – erjot 2010-10-05 06:20:10

+2

代码计算密集型(CPU),磁盘I/O密集型,网络I/O密集型,内存消耗,多线程等?了解一些初始方向将帮助您找到更合适的工具。 – rwong 2010-10-05 06:20:44

+1

你想要执行时间或分析代码的工作吗? – jknair 2010-10-05 06:20:53

回答

7

对于典型的性能基准测试,这是我使用的。

  • gprof/oprofile - 用于CPU密集分析您的代码。
  • 的netstat /空灵 - 网络统计
  • 的iostat/SAR - 用于I/O
  • 的vmstat - 内存
  • 的mpstat/SAR - CPU使用率

现在ü可以隔离问题基于这些工具的输出。

例如: - 如果I/O是恒定的并且在限制范围内,您可以将I/O视为一个问题。 如果CPU使用率如图所示my mpstat很大,那么使用gprof/oprofile进行分析。

没有将它们全部用于不同的运行,它很难找出瓶颈。

注意:U可以编写脚本将它们全部运行起来,并将结果存储在每次运行的指定文件夹中。

+0

+1提到好的工具。 + valgrind用于极其CPU /缓存密集型任务。为了快速启动,在程序运行时检查CPU与经过时间的比率是很有必要的 - 可以看到最高。如果它非常闲散,那么你需要改进你的网络 - 考虑用其他方式打包/压缩数据。如果CPU固定,使用'gprof'或其他来描述哪些功能花费时间,或者引入自己的定时器(boost可以使用高分辨率定时功能)来衡量处理的特定部分需要多长时间才能完成。 – 2010-10-05 07:19:06

1

到目前为止,我所知道的最好的Linux分析器是Zoom。虽然这是一个商业产品,这不是太昂贵的,你可以要求获得30天的免费评估许可证

2

我建议Valgrind的

  • CPU使用率,callgrind子模块(源代码行粒度)
  • 内存泄露
  • 楼宇通话图
  • 一些高级问题,如发现多线程锁定机制中的问题

callgrind输出可以通过KCacheGrind直观显示。