Profiler for Windows C++(基于控制台的网络应用程序)

问题描述:

我们开发了基于Windows C++控制台的网络密集型应用程序,该应用程序在数据通信期间似乎很慢。Profiler for Windows C++(基于控制台的网络应用程序)

代码库非常庞大,所以我正在寻找一个探查器工具,它可以指向特定函数/代码行,这是整体性能的瓶颈。

我尝试使用VS 2010中的“性能工具”,但它崩溃了,现在我运行它来分析应用程序。

Error Message: Injection of Runtime library failed. 

而且,我试着用很困,但我看不到我的功能在里面,可能是因为它不能指向源代码(但是不知道,可我mightnot正确地使用它)

有人可以为基于Windows C++控制台的应用程序提供一些好的免费可用分析器吗?

基于评估,我们也将继续探索商业版本。

很多预先感谢。

如果您使用的是基于Intel的机器,我会使用VTune。如果它是在AMD机器上,CodeAnalyst是类似的产品。

我相信VTune有试用许可证。 CodeAnalyst免费提供。

这些工具不是基于控制台的,但它们可用于分析基于控制台的应用程序。

+0

适用于Windows的英特尔®VTune™Amplifier XE – RDX 2013-03-12 09:15:43

我们的C++ Profiler工具应该工作。

它并不关心你的应用程序如何执行I/O操作(例如,“基于控制台”)。它处理巨大的文件系统。它还处理C++的GNU和MS方言,以及C++ 11。

商业。 (我怀疑你会发现一个适用于MS Visual C++的免费分析器)。

+0

可以在我们计划购买之前用于评估目的 – RDX 2013-03-12 09:31:37

+0

在网站上有一个评估版下载。你可以运行它来了解它是如何运作的,但在评估过程中它不会处理你的巨型计划。 – 2013-03-12 09:33:13

有可能会有几个“问题”,或使其更快的方法。 我不会称他们为“瓶颈”,因为他们经常没有本地化。 通常他们是非常好的代码 - 它从来没有假设他们会在“关键路径”上。

假设的问题,固定时,将保存这些百分比:

enter image description here

就发现其中一个会给你一定的加速比。 就像你刚刚找到A一样,那会让你加速1 /(1-0.3)= 1.43或43%。 如果你这样做了,你可以像大多数人一样快乐并停下来。然而,如果你继续并发现B,你的总加速比将是1 /(1-0.51)= 2.04或104%。 尽管B小于A,但这比B的43%多很多。 C修正使您的速度提高了2.92倍,D提升了4.2倍。

什么?解决小问题有更高的回报? 他们可以,因为加速因素复合。 以此顺序修复A和B会使您的1.43 * 1.43 = 2.04。 如果你碰巧修复他们在相反的顺序,你得到1.27 * 1.61 = 2.04

每次你修复的东西,其他问题变得更大,百分比和更容易找到,并加速积累像一个高分辨率,收益投资。 当你修复A,B,C,D和E时,剩下的一个是F,它不是5%,它是30%。 修复所有这些问题,现在您的速度提高了8.5倍! 然而,如果你错过了一个,比如D,因为你的分析工具无法公开它,你只有4.5倍的速度。

这就是您为找不到问题付出的代价。

这就是为什么我依靠a manual technique,因为,相对于探查器,它找到了他们找到的所有问题,并找到了他们不知道的问题。 配置文件经常关注外设问题,如测量的准确性,这无助于发现问题。 如果你想知道为什么,here's the math