Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 叠外采样:C++;剖析器 黑客的故事_C++_Qt_Optimization_Profiling_Profiler - Fatal编程技术网

C++ 叠外采样:C++;剖析器 黑客的故事

C++ 叠外采样:C++;剖析器 黑客的故事,c++,qt,optimization,profiling,profiler,C++,Qt,Optimization,Profiling,Profiler,日期是2010年2月12日。圣诞节前的日子一天天过去,作为一名windows程序员,我几乎遇到了一个主要障碍。我一直在使用AQTime,我尝试过sleepy、shiny和very sleepy,正如我们所说的,VTune正在安装。我曾尝试使用VS2008探查器,它一直在积极地惩罚我,而且常常是不理智的。我使用了随机暂停技术。我检查过呼叫树。我已经触发了函数跟踪。但令人痛心的事实是,我正在使用的应用程序有超过一百万行代码,可能还有价值一百万行的第三方应用程序 我需要更好的工具。我读过其他的主题。我

日期是2010年2月12日。圣诞节前的日子一天天过去,作为一名windows程序员,我几乎遇到了一个主要障碍。我一直在使用AQTime,我尝试过sleepy、shiny和very sleepy,正如我们所说的,VTune正在安装。我曾尝试使用VS2008探查器,它一直在积极地惩罚我,而且常常是不理智的。我使用了随机暂停技术。我检查过呼叫树。我已经触发了函数跟踪。但令人痛心的事实是,我正在使用的应用程序有超过一百万行代码,可能还有价值一百万行的第三方应用程序

我需要更好的工具。我读过其他的主题。我已经试用了每个主题中列出的每个分析器。必须有比这些垃圾和昂贵的选择更好的东西,或是比那些几乎毫无收益的荒谬的工作量更好的东西。让事情更加复杂的是,我们的代码线程化程度很高,并且运行了许多Qt事件循环,其中一些循环非常脆弱,由于时间延迟,它们在大量检测下崩溃。不要问我为什么要运行多个事件循环。没人能告诉我

在windows环境中,是否还有其他类似Valgrind的选项?
还有什么比我已经试过的一长串坏掉的工具更好的吗?
是否有任何东西是为了与Qt集成而设计的,也许是为了在队列中显示有用的事件

我尝试过的工具的完整列表,以及那些真正有用的斜体:

  • 阿奎斯特:相当好!在深度递归方面有一些问题,但是调用图在这些情况下是正确的,可以用来消除可能存在的任何混淆。这不是一个完美的工具,但值得一试。它可能适合你的需要,而且在大多数情况下对我来说确实足够好
  • 调试模式下的随机暂停攻击:信息不足,时间不够。
    这是一个很好的工具,但不是一个完整的解决方案
  • 平行工作室:核选择。突兀的,怪异的,疯狂的强大。我认为你应该进行30天的评估,看看是否合适。这也太酷了
  • AMD代码分析员:很棒,易于使用,非常容易崩溃,但我认为这是一个环境问题。我建议你试试,因为它是免费的
  • 卢克·斯塔克沃克:在小项目上效果很好,但在我们的项目上却有点效果。虽然有一些不错的效果,但它肯定会取代我的个人任务中的困倦
  • PurifyPlus:不支持Win-x64环境,尤其是Windows 7。其他方面都很好。我在其他部门的一些同事对此深信不疑
  • VS2008探查器:在功能跟踪模式下以所需的分辨率在100+千兆位范围内生成输出。从好的方面来说,它可以产生可靠的结果
  • GProf:要求GCC具有中等效力
  • VTune:VTune的W7支持近乎犯罪。其他方面出色
  • PIN:我需要修改我自己的工具,所以这是最后的手段
  • Sleepy\VerySleepy:对于较小的应用程序很有用,但在这里让我失望
  • EasyProfiler:如果您不介意手动注入一些代码来指示在何处插入仪器,那就不错了
  • Valgrind:*仅限尼克斯,但在那种环境下非常好
  • OProfile:仅限Linux
  • 普罗菲:他们射杀野马
我没有尝试过的建议工具:

  • XPerf:
  • 代码:
  • Devpartner:
注意事项: 目前的英特尔环境。VS2008,boost库。qt4+。其中最糟糕的是:通过trolltech进行Qt/MFC集成。
现在:差不多两周后,我的问题似乎解决了。多亏了各种各样的工具,包括清单上的几乎所有东西和我的一些个人技巧,我们找到了主要的瓶颈。然而,我将继续测试、探索和尝试新的分析器以及新技术。为什么?因为我欠你们的,因为你们太棒了。它确实使时间线慢了一点,但我仍然很兴奋能继续尝试新的工具

简介
在许多其他问题中,许多组件最近被切换到错误的线程模型,由于我们下面的代码突然不再是多线程的,导致了严重的挂起。我不能再多说了,因为它违反了我的保密协议,但我可以告诉你们,这永远不会被偶然的检查,甚至是正常的代码审查发现。如果没有探查器、呼叫图和随机暂停,我们仍然会对美丽的蓝色天空发出愤怒的尖叫。谢天谢地,我和一些我见过的最好的黑客一起工作,我有机会接触到一首充满伟大工具和伟大人物的精彩诗篇

先生们,我非常感谢你们,唯一遗憾的是我没有足够的声誉来奖励你们每一个人。我仍然认为这是一个重要的问题,需要得到比我们迄今为止得到的更好的答案

因此,在接下来的三周里,每周我都会拿出我能负担得起的最大的奖金,并用我认为不是常识的最好的工具来奖励答案。三个星期后,如果你能原谅我的双关语,我们很有可能已经积累了一份关于剖析者的明确资料

外卖
使用分析器。它们对里奇、克尼汉、宾利和克努斯来说已经足够好了。我不管你以为你是谁。使用分析器。如果你找到的那个坏了,找另一个。如果你找不到,请给我打个电话。如果您无法编写代码,或者是一个小挂起,或者您只是卡住了,请使用随机暂停。如果所有这些都失败了,雇佣一些研究生来制作一个剖析器


较长的视图
所以,我想写一篇回顾性的文章可能会很好。我选择了工作