我完全不了解剖析的概念,有没有人能给我简单的步骤,告诉我如何对特定函数进行剖析?
这两个函数都是做同样的事情,但一个是在vs2008中的C#,另一个是在vs2010中的C++。我主要关心的是C++函数,因为它运行得非常缓慢,我想找出原因所在。谢谢。
我完全不了解剖析的概念,有没有人能给我简单的步骤,告诉我如何对特定函数进行剖析?
这两个函数都是做同样的事情,但一个是在vs2008中的C#,另一个是在vs2010中的C++。我主要关心的是C++函数,因为它运行得非常缓慢,我想找出原因所在。谢谢。
我将介绍一下如何对特定函数进行剖析的简单步骤
我使用的方法是随机暂停,也许更为人所知的是穷人的剖析器(我很喜欢它,直到我看到他们的聚合方式)。 这里有另一个链接。 你不需要告诉它要查看哪个特定函数。 它会自动找到最耗时的内容,无论是该函数还是其他函数。
关于它的事情是,与“真正”的剖析器相比,有些人可能会说它很粗糙,乏味等等。 那么为什么要这样做?
因为它是有效的。
你可以将问题钉定到具体的指令,并在开始研究大量来自大多数分析器的内容之前就知道需要修复什么,这些内容包括:自我时间、调用次数、调用树、调用图、“热路径”、“CPU时间”等等。任何分析器的要求不在于其“准确性”,而在于在真实(而非玩具)程序中使用它通常可以实现多少加速?这难道不是您关心的吗?这里有一个例子,使用随机暂停技术达到了43倍的加速效果。这里有一个想法。编写一个测试应用程序,反复调用此函数,并尽可能少地执行其他操作。然后创建两个可执行文件,分别包含两个版本的函数。现在,在这两个可执行文件上运行Very Sleepy分析器,并比较结果。分析器将显示每个函数的慢速部分。
另一个你可能会觉得有用的分析器是Shiny。它以完全不同的方式工作。您必须在要进行分析的函数或代码部分中插入调用,然后编译特殊的启用了分析器的应用程序版本。