我有一个在Linux上运行的C++应用程序,我正在优化它.如何确定代码的哪些区域运行缓慢?
这个网站上已经存在很多性能问题,但是我发现几乎所有这些都是特定于问题且相当狭窄的问题.几乎所有人都重复这些建议,以避免过早优化.
我们假设:
我在这里寻找的是在一个关键算法中挤出最后几个百分点的策略和技巧,除此之外别无他法.
理想情况下,尝试使答案语言不可知,并在适用的情况下指出建议策略的任何缺点.
我将使用我自己的初步建议添加回复,并期待Stack Overflow社区可以想到的任何其他内容.
这绝对是主观的,但我想尽量避免它变得有争议.我认为如果人们适当地对待它可能是一个有趣的问题.
对这个问题的想法来自评论跟帖从我的回答到:"你恨你喜欢的语言什么的五件事?" 问题.我争辩说C#中的类应该默认密封 - 我不会把我的推理放在这个问题上,但我可以写一个更全面的解释作为这个问题的答案.我对评论中讨论的热度感到惊讶(目前有25条评论).
那么,你持有什么有争议的意见?我宁愿避免那种以相对较少的基础(例如括号放置)而变得非常宗教的东西,但是例子可能包括诸如"单元测试实际上并不十分有用"或"公共领域真的很好"之类的东西.重要的是(对我来说,无论如何)是你有理由支持你的意见.
请提出您的意见和推理 - 我鼓励人们投票支持有争议和有趣的意见,无论您是否恰好同意这些意见.
除了ruby-prof和核心Benchmark类之外,你用什么来分析你的Ruby代码?特别是,您如何找到代码中的瓶颈?几乎感觉我需要使用我自己的小工具才能找出在我的代码中花费的所有时间.
我意识到ruby-prof提供了这个,但输出坦率地说非常混乱,并且不容易找出你自己的代码的哪些实际块是问题的根源(它告诉你哪些方法调用占用了最多的时间)虽然).因此,我并没有像我想的那样得到更多的东西,而且还没有真正能够利用它.
也许我做错了?还有替代品吗?谷歌搜索不会为我带来任何东西.
我偶然发现了Stack Overflow问题,差异执行如何工作?,这是一个非常详细和详细的答案.所有这一切都有意义......但是当我完成时,我仍然不知道差异执行究竟是什么.真的是什么?
我喜欢Visual Studio Ultimate 2010的分析器.但是我没有8,000美元或其他任何成本来获得该功能.是否有任何好像即使不是更好的分析器?它不一定是免费的.我基本上希望看到像方法X这样的东西有这么多的包容时间,被调用的时间和世界卫生组织,独家时间等等.还有别的吗?
看起来好像分析工具仅在Visual Studio 2010的Premium和Ultimate版本中可用.
有合理的替代方案是免费的吗?
我正在寻找一种方法来找到解决方案中的瓶颈方法(许多项目).
假设我有一个巨大的程序(1000个方法),我想通过查找被调用的方法(实际上在运行时使用)来提高性能,并优化它们.
我需要这个用于用C++,C#,CLI/C++编写的复杂问题.(我可以在调试中编译它并拥有.pdb文件)
所以,我正在寻找某种分析器,它会告诉我每个方法使用多少cpu时间.
我可以在Visual Studio中使用哪些工具/插件/功能来获取该信息?
我希望能够运行程序几分钟,然后分析方法的CPU使用情况.甚至更好 - CPU数量/呼叫数量.
如果我可以按名称空间或dll/package/project排序,那会更好.
我从这里下载链接文本的CLR分析器不适用于使用.NET 4.0实现的我的应用程序.是否有.NET 4.0版本?谢谢.