如何对Visual C++ Express进行性能分析?

7
我已经阅读了这里提供的大量性能分析建议,但我需要问一下。
据我所知,Visual C++ Express不会生成由分析器程序使用的调试文件。我尝试了AMD Codeanalyst,它似乎工作正常,但是我的程序中没有一个例程被识别,只有许多“未识别的模块”。
我是C ++新手。我习惯于Python使用的简单分析器。我认为这很简单,因为该语言是解释型的。
感谢任何见解。
附言:方向盘的旋转是否是汽车旋转的导数?

1
对于严肃的开发,你必须要么支付微软税,要么切换到开放平台。Visual Studio Express只是一个样本,让你上瘾。至于ps:我怀疑;车轮的角度会以非线性方式影响与路面的摩擦力。 - Mike Seymour
你能推荐一个开源的C++ IDE,类似于Visual Studio或者同样强大吗? - Peter Stewart
1
我是一个技术落后的人,不会使用集成开发环境,所以无法给出自己的推荐;我的首选环境是一个 shell、GNU 工具和一个基本的源代码编辑器,但这并不适合所有人。我听说过 Eclipse 和 Codeblocks,但我不知道它们是否好用,也不知道它们与 Visual Studio 相比如何。 - Mike Seymour
1
关于“未识别的模块”问题 - 您正在分析的程序是否包含调试符号?分析器需要它们来识别函数。应该有一个构建选项来包含或删除它们。 - Mike Seymour
@Mike。我会查看使用裸机编程的方法。无论如何,你最终都必须弄清楚它们,因为我遇到的IDE(除了MS之外)都使用它们来进行编译、链接、调试等操作。感谢您的回复。 - Peter Stewart
3个回答

7

首先,汽车的极角速度应该与汽车速度和方向盘的角度位置成比例关系(在第一近似下)。

其次,几乎没有教授、博客或书籍作者会告诉你这一点,但如果你想看到代码在做什么并进行优化,最简单的方法是这样的

补充:程序员有一种强烈的倾向,认为任何自动化分析工具都比手动技术更好,但这取决于它们的详细内容。大多数工具实现的是流行而不是最有效的内容。结果是一些性能问题被忽略了,从而限制了速度提升的空间。这里列出了一些常见的误解,导致无法找到性能问题。

一些分析工具 确实 做得很好,包括RotateRight/ZoomLTProf


@Mike Seymour:你可能认为很简单,但是根据文档,它似乎存在许多在这里概述的问题:https://dev59.com/xHI-5IYBdhLWcg3wlpeW#1779343 - Mike Dunlavey
1
@Mike Seymour:...它需要1)在I/O期间获取线程的随机堆栈样本,2)能够忽略用户输入期间的样本或更好地让用户通过热键控制采样,3)报告每行(而不是每个函数)包含该行的样本百分比(忽略递归),4)最理想的情况是让用户看到单个堆栈样本。最后,样本不需要大量采集或高频率采集。实际上,lsstack是一种完全有用的采样方式。 - Mike Dunlavey
@Mike Seymour:例如,任何问题,如果消除它可以节省10%或更多的执行时间,那么在20个样本中就可以相当可靠地找到它。不是精确测量-而是准确地发现 - Mike Dunlavey
是的,暂停是一种令人惊讶的有效技术。我用这种方法修复了几个缓慢的进程。 - Steven Fisher
+1 真的是非常聪明的方法,当我停止使用分析器时,我的代码效率大大提高了。 (“在代码中亲手动手做一些事情是无法超越的”,我也赞同!) - codelidoo
显示剩余2条评论

0
你确定吗?据我所知,Visual Studio Express可以创建.PDB文件,但如果你使用的是发布版本,则可能需要请求它为你生成调试信息。(必须这样做--否则Visual Studio的调试器将无法工作!)

好的,VSE确实会创建一些.pdb文件。我需要再用Codeanalyst进行一些调试。Visual Studio的调试器无法与VS Express配合使用。 - Peter Stewart
@Peter Stewart:嗯...是的,VS的调试器可以在VS Express中使用。您可以设置断点并运行程序,它将正常运行。 - Billy ONeal
对不起。是的,你说得对,我想到了VS的分析器。 - Peter Stewart

0

编写自己的分析器并不难。或者你可以选择一个经过测试的开源分析器。你可能想看一下我的开源分析器,叫做cRunWatch


那看起来像是一个不错的分析器,我也喜欢单元测试程序。我会进一步研究它。 - Peter Stewart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接