![]() |
1
24
使用
|
![]() |
2
12
如果您使用的是Linux,那么我建议将 ValGrind 和 CallGrind and KCacheGrind . valgrind是查找内存泄漏的极好方法,callgrind扩展可以生成一个好的分析器。 注释 我只是 learned Valgrind现在也可以在Mac OSX上工作。然而,自2005年以来,callgrind和kcachegrind一直没有更新。你可能想看看 other front-ends . |
![]() |
3
3
很高兴你问我:-) 如果您不介意逆向思维,请检查以下答案: 让我简而言之:
我建议采样,这是获取频闪X光的程序正在做什么,当它忙(不等待你)。至少获取调用堆栈的样本,而不仅仅是程序计数器。如果您只获取程序计数器的样本,那么如果您的程序在I/O或库例程中花费大量时间,那么这将毫无意义,因此不要满足于此。 如果你想得到很多样本,你需要一个分析器。如果只需要几个,调试器中的暂停按钮就可以正常工作。根据我的经验,20多就足够了,5多就足够了。 为什么?假设您有1000个调用堆栈示例。每一个样本都代表了花费在墙上的一小段时间。 只是因为堆栈上的每一行代码都请求它 .因此,如果有一行代码出现在1000个样本中的557个样本上,您可以假设它负责557/1000次,给出或抽取一些样本(15)。这意味着,如果整个执行时间花费了您100美元,那么该行本身就花费了55.70美元,给予或接受1.50**,所以您应该看看您是否真的需要它。 但是你需要1000个样品吗?如果这条线花费了55.7%的时间,那么如果你只取了10个样本,你会在其中6个样本上看到它,给或取1.5个样本。所以,如果你看到一份关于10个样本中6个的声明,你就会知道,在100个样本中,大约要花费45到75美元。即使只花45美元,你不想看看你是否真的需要吗? 这就是为什么你不需要很多样品-你不需要太多的准确性。您需要的是堆栈示例提供给您的东西——它们精确地将您指向要优化的最有价值的行。
**样品数量的标准偏差为
|
![]() |
4
1
Shark/Instruments(使用dtrace)是Mac上可用的配置文件。它们很不错。 |
![]() |
6
0
Visual Studio Team System 有一个好的轮廓仪。 也, Intel VTune 还不错。 |
![]() |
Community wiki · C中有哪些耗时的操作? 1 年前 |
![]() |
Community wiki · 将所有处理器电源都投入到任务中 1 年前 |
![]() |
Community wiki · C++为C添加了什么?[已关闭] 1 年前 |
![]() |
Community wiki · 打印1到1000,不带循环或条件 1 年前 |