C++性能测试工具——Vtune等的介绍
一、介绍
我们在前面的相关文章中对C++性能的测试和分析工具(见“C++性能测试工具gprof和gperftools基础”等)有一个初步的了解和应用,其实类似的相关工具还有不少。为了进一步的让开发者们掌握更多的相关性能测试分析相关的方法,对另外几个工具进行介绍。
二、几个性能工具
在一些大型公司或者专用平台,针对具体的场景下,会有针对性的性能测试和分析工具,在Intel平台下有Intel Vtune,在AMD平台上有AMD CodeAnalyst,这两个工具都是架构级的分析,基本都是跨平台的。当然,可能跨得并不完全,但在Windows/Linux上没有什么问题。这两个工具都比较专业化,应用起来也相对要求也要高一些。
另外,在使用Valgrind工具时,其中的Callgrind提供了程序的调用图分析,这个对于复杂调用中的性能分析有着巨大的帮助。不过它不支持跨平台应用,只能在类Linux/Unix系统上使用。
Oprofile被认为是Linux平台上最好的性能监测工具,它能够根据CPU提供的接口进行采样,从代码层次上对性能进行监测和分析。它支持两种采样(sampling)方式:基于事件的采样(eventbased)和基于时间的采样(timebased)。需要注意的是,在虚拟机中,它的应用是受限的,不建议使用。
Sysprof是一个开源的 Linux 系统性能分析工具,侧重于帮助开发者分析应用程序的 CPU、内存、I/O 等资源的使用情况,从而确定性能瓶颈。
这些工具基本都支持多线程和远程的分析调用,但Callgrind及Sysprof两个都不支持远程的分析使用。
三、对比
上面对Vtune等性能分析工具进行了介绍和说明,为了能够更好的让大家掌握这几个工具的特点,对几个工具进行对比:
四、总结
在初步了解这些性能分析工具后,在后面会针对具体的工具安装和应用进行举例说明。工欲善其事,必先利其器。一个优秀的开发者,除了能够熟练掌握开发的相关技能,更应该掌握各种开发相关的工具,特别是在性能分析方面的工具,更是重中之重。