标签: profiling

如何分析.hprof文件?

我有一个使用以下标志运行的生产服务器: - XX:+ HeapDumpOnOutOfMemoryError

昨晚它在我们的服务器遇到堆错误时生成了一个java-38942.hprof文件.事实证明,系统的开发人员知道标志,但无法从中获取任何有用的信息.

有任何想法吗?

java heap profiling

213
推荐指数
7
解决办法
29万
查看次数

如何在Python中分析内存使用情况?

我最近对算法感兴趣,并开始通过编写一个简单的实现,然后以各种方式优化它来探索它们.

我已经熟悉用于分析运行时的标准Python模块(对于大多数事情我已经发现IPython中的timeit魔术功能已足够),但我也对内存使用感兴趣,所以我也可以探索这些权衡(例如,缓存先前计算的值表的成本与根据需要重新计算它们的成本.是否有一个模块可以为我分析给定函数的内存使用情况?

python memory profiling

198
推荐指数
7
解决办法
21万
查看次数

如何在内存中获取对象大小?

我需要知道我的对象在内存中消耗了多少字节(在C#中).例如,我Hashtable,或SortedList,或多少List<String>.

.net c# memory performance profiling

195
推荐指数
5
解决办法
26万
查看次数

如何为命令行PHP脚本触发XDebug探查器?

XDebug提供配置指令"xdebug.profiler_enable_trigger",允许通过在通过HTTP调用脚本时传递GET或POST参数"XDEBUG_PROFILE"来激活分析.如果您不想对所有脚本进行性能分析,但仅针对少数特殊情况而不总是更改PHP配置,则这很方便.

有没有办法实现命令行PHP程序的相同行为?我试图将"XDEBUG_PROFILE"作为命令行参数传递,但它不起作用.

通常,分析命令行PHP运行良好,但我希望具有与浏览器和HTTP服务器相同的每次调用灵活性.

有什么建议?

php configuration command-line profiling xdebug

189
推荐指数
6
解决办法
8万
查看次数

gprof 的替代品

还有哪些程序与 gprof 做同样的事情?

profiler profiling gprof

170
推荐指数
6
解决办法
7万
查看次数

超越堆栈采样:C++ Profilers

黑客的故事

日期是12/02/10.圣诞节前几天正在逐渐消失,作为一名Windows程序员,我几乎成了一个重要的障碍.我一直在使用AQTime,我已经尝试过困,有光泽,而且非常困,正如我们所说,VTune正在安装.我曾尝试使用VS2008探测器,它一直在积极惩罚,而且经常无法察觉.我使用了随机暂停技术.我检查了呼叫树.我已经解雇了函数跟踪.但令人痛苦的事实是,我正在使用的应用程序超过一百万行代码,可能还有另外一百万行的第三方应用程序.

我需要更好的工具. 我已经阅读了其他主题. 我已经尝试了每个主题中列出的每个分析器.只需要比这些垃圾和昂贵的选择更好的东西,或几乎没有收获的荒谬工作.为了使问题更加复杂,我们的代码经过严格的线程化,并运行了许多Qt事件循环,其中一些非常脆弱,以至于由于时序延迟而导致重负荷仪表崩溃.不要问我为什么我们运行多个事件循环.没有人能告诉我.

在Windows环境中,Valgrind还有更多选择吗?
有没有什么比我已经尝试过的大量破碎工具更好的了?
是否有任何旨在与Qt集成的东西,也许是在队列中有用的事件显示?

我尝试过的工具的完整列表,以及斜体中非常有用的工具:

  • AQTime:相当不错!深度递归有一些问题,但在这些情况下调用图是正确的,并且可用于清除您可能遇到的任何混淆.不是一个完美的工具,但值得尝试.它可能适合您的需求,而且在大多数情况下它对我来说当然足够好.
  • 调试模式下的随机暂停攻击:没有足够的时间信息.
    一个好工具,但不是一个完整的解决方案
  • Parallel Studios: 核选项.突兀,怪异,疯狂的强大.我认为你应该进行30天的评估,并确定它是否合适.它也很酷.
  • AMD Codeanalyst: 精彩,易于使用,非常容易崩溃,但我认为这是一个环境问题.我建议尝试一下,因为它是免费的.
  • Luke Stackwalker:在小型项目上工作得很好,它有点试图让它在我们的工作上运行.虽然有一些好的结果,但它绝对取代了我的个人任务Sleepy.
  • PurifyPlus:不支持Win-x64环境,最突出的是Windows 7.否则非常出色.其他部门的一些同事也发誓.
  • VS2008 Profiler:在功能跟踪模式下以所需分辨率生成100 + gigs范围内的输出.从好的方面来说,产生可靠的结果.
  • GProf:要求GCC甚至适度有效.
  • VTune:VTune的W7支持犯罪边界.否则很棒
  • 密码:我需要破解自己的工具,所以这是最后的手段.
  • Sleepy\VerySleepy:对于较小的应用程序很有用,但在这里让我失望.
  • EasyProfiler:如果您不介意手动注入一些代码来指示仪器的位置,那就不错了.
  • Valgrind:*nix only,但是当你在那个环境中时非常好.
  • OProfile:仅限Linux.
  • Proffy:他们拍野马.

我没试过的建议工具:

  • XPerf:
  • Glowcode:
  • Devpartner:

备注:目前 英特尔环境.VS2008,提升库.Qt 4+.他们所有人的悲惨态度:通过trolltech进行Qt/MFC整合.


现在:差不多两周后,看起来我的问题已经解决了.感谢各种工具,包括列表中的几乎所有工具以及我的一些个人技巧,我们发现了主要的瓶颈.但是,我将继续测试,探索和尝试新的分析器以及新技术.为什么?因为我欠你们的,因为你们摇滚.它确实减慢了时间线,但我仍然非常高兴继续尝试新工具.

概要
在许多其他问题中,最近已将许多组件切换到不正确的线程模型,由于我们下面的代码突然不再是多线程的,因此导致严重的挂起.我不能说更多,因为它违反了我的保密协议,但我可以告诉你,通过临时检查甚至正常的代码审查都不会发现这种情况.如果没有分析器,调用图和随机暂停,我们仍然会在美丽的蓝色天空中尖叫着我们的愤怒.值得庆幸的是,我与一些我见过的最好的黑客合作,我可以获得一个充满伟大工具和优秀人才的惊人"诗歌.

Gentlefolk,我非常欣赏这一点,并且唯一的遗憾是我没有足够的代表来奖励你们每个人.我仍然认为这是一个重要的问题,要比我们到目前为止得到的更好的答案.

结果,在接下来的三个星期的每周,我将提供我能负担得起的最大奖金,并用我认为不是常识的最好的工具授予它答案.三个星期后,如果你原谅我的惩罚,我们希望已经积累了一些关于剖析器的确切概况.

外卖
使用分析器.他们对Ritchie,Kernighan,Bentley和Knuth来说已经足够了.我不在乎你认为你是谁.使用分析器.如果你得到的那个不起作用,找另一个.如果你找不到一个,代码一.如果你不能编码一个,或者它是一个小挂机,或者你只是卡住,使用随机暂停.如果一切都失败了,请聘请一些研究生来敲打一个剖析器.


更长远的观点
所以,我认为写一些回顾可能会很好.我选择与Parallel Studios广泛合作,部分原因是它实际上是建立在PIN工具之上的.在与一些研究人员进行了学术交流之后,我觉得这可能是一些品质的标志.谢天谢地,我是对的.虽然GUI有点可怕,但我发现IPS非常有用,尽管我不能轻易地为每个人推荐它.至关重要的是,没有明显的方法可以获得线级命中数,这是AQT和其他一些分析器提供的,我发现它对于检查分支选择率等非常有用.在网上,我也喜欢使用AQTime,我发现他们的支持非常敏感.同样,我必须符合我的建议:他们的许多功能都不能很好地工作,其中一些功能在Win7x64上完全崩溃.XPerf的表现也令人钦佩,但是对于在某些类型的应用程序上获得良好读取所需的采样细节来说,这是非常缓慢的.

现在,我不得不说我不认为在W7x64环境中分析C++代码有一个明确的选择,但肯定有一些选项无法执行任何有用的服务.

c++ optimization profiler qt profiling

145
推荐指数
4
解决办法
1万
查看次数

MATLAB OOP运行缓慢还是我做错了什么?

我与实验MATLAB OOP,因为一开始我模仿我的C++的记录器类,我把我所有的字符串辅助函数在String类,以为这将是巨大的,能够做的事情一样a + b,a == b,a.find( b )而不是strcat( a b ),strcmp( a, b ),检索的第一元件strfind( a, b ),等

问题:减速

我把上面的东西用上,并立即注意到一个急剧减速.我做错了(这当然有可能,因为我有相当有限的MATLAB经验),还是MATLAB的OOP只是引入了很多开销?

我的测试用例

这是我为字符串做的简单测试,基本上只是附加一个字符串并再次删除附加部分:

classdef String < handle
  ....
  properties
    stringobj = '';
  end
  function o = plus( o, b )
    o.stringobj = [ o.stringobj b ];
  end
  function n = Length( o )
    n = length( o.stringobj );
  end
  function o = SetLength( o, n ) …
Run Code Online (Sandbox Code Playgroud)

oop benchmarking matlab profiling matlab-class

136
推荐指数
1
解决办法
2万
查看次数

减少Django内存使用量.低挂水果?

我的内存使用量随着时间的推移而增加,重新启动Django并不适合用户.

我不确定如何分析内存使用情况,但有关如何开始测量的一些提示将非常有用.

我有一种感觉,有一些简单的步骤可以产生巨大的收益.确保'debug'设置为'False'是一个显而易见的问题.

谁能建议其他人?在低流量网站上缓存多少改进?

在这种情况下,我使用mod_python在Apache 2.x下运行.我听说mod_wsgi有点精简但在这个阶段转换会很棘手,除非我知道收益会很大.

编辑:感谢您的提示到目前为止.有关如何发现内存消耗的建议吗?是否有任何Python内存分析指南?

另外如上所述,有一些事情会让切换到mod_wsgi变得棘手,所以我想知道在向这个方向前进之前我可以期待的收益.

编辑: Carl在这里发布了一个稍微更详细的回复,值得一读:Django部署:削减Apache的开销

编辑: Graham Dumpleton的文章是我在MPM和mod_wsgi相关的东西上发现的最好的文章.我很失望,没有人可以提供有关调试应用程序本身的内存使用情况的任何信息.

最终编辑:我一直在与Webfaction讨论这个问题,看看他们是否可以协助重新编译Apache,这是他们在这个问题上的说法:

"我真的不认为你会通过切换到MPM Worker + mod_wsgi设置获得很多好处.我估计你可以节省大约20MB,但可能没有多少."

所以!这让我回到原来的问题(我仍然不是明智的).如何确定问题所在?这是一个众所周知的格言,如果不进行测试就无法优化,看看你需要优化的地方,但是关于测量Python内存使用量的教程很少,而且根本没有针对Django的内容.

感谢大家的帮助,但我认为这个问题仍然存在!

另一个最终编辑;-)

我在django-users列表中询问了这个问题,得到了一些非常有帮助的回复

老实说,有史以来最后一次更新!

这刚刚发布.可能是最好的解决方案:使用Pympler分析Django对象大小和内存使用情况

python django profiling memory-management mod-python

135
推荐指数
4
解决办法
2万
查看次数

如何设置JVM的最大内存使用量?

我想限制JVM使用的最大内存.注意,这不仅仅是堆,我想限制此进程使用的总内存.

java memory profiling memory-leaks memory-management

125
推荐指数
4
解决办法
28万
查看次数

分析Vim启动时间

使用Vim时我已经启用了很多插件 - 多年来我收集了插件.我有点厌倦了Vim现在需要多长时间,所以我想介绍一下它的启动,看看我有哪些插件负责.

有没有办法分析Vim的启动或脚本运行?理想情况下,我想知道Vim在加载的每个Vim脚本中花了多长时间.

debugging vim optimization profiling

125
推荐指数
7
解决办法
3万
查看次数