profiling相关内容
经常在 SO 上,我发现自己对小块代码进行基准测试,以查看哪种实现最快. 我经常看到一些评论说基准测试代码没有考虑抖动或垃圾收集器. 我有以下简单的基准测试功能,我慢慢发展: static void Profile(string description, int iterations, Action func) {//暖身功能();//清理GC.Collect();var watc
..
您使用哪些工具来确定代码的效率?您是否使用运行大量测试的本土应用程序或某些商业产品?您是否使用自己的知识来测试代码的某些区域,或者使用一些工具来分析代码的弱点? 解决方案 这叫做 profiling.对于各种不同的语言,有许多现成的工具可以帮助您确定应用程序中的瓶颈在哪里.例如,用于 Java 的 TPTP 工具集可以向您展示性能瓶颈所在的各个方法水平,如果你愿意的话.当然,有时您真正需要
..
是否有好的 JavaScript 分析器?我知道 firebug 对分析代码有一些支持.但我想确定更长期的统计数据.假设您正在构建大量 javascript 代码,并且想要确定代码中的实际瓶颈是什么.起初,我想查看每个 javascript 函数和执行时间的配置文件统计信息.接下来是包含 DOM 函数.这与诸如渲染树上的操作之类的减慢操作相结合将是完美的.我认为如果性能在我的代码、DOM 准备或渲
..
def main():对于 xrange(10**8) 中的 i:经过主要的() 这段代码在Python中运行(注:在Linux中用BASH中的time函数来计时.) real 0m1.841s用户 0m1.828s系统 0m0.012s 但是,如果 for 循环没有放在函数中, for i in xrange(10**8):经过 然后它会运行更长的时间: real 0m4.543s
..
如果某件事使单线程程序需要花费 10 倍的时间,那么您可以在其上运行分析器.您也可以使用“暂停"按钮停止它,然后您就会确切地看到它在做什么. 即使它只比应有的速度慢 10%,如果您多次停止它,不久您就会看到它反复做不必要的事情.通常问题是堆栈中间某处的函数调用并不是真正需要的.这并不能衡量问题,但它确实可以找到问题. 编辑:反对意见主要假设您只取了 1 个样本.如果您是认真的,请选择
..
分析 Scala 方法调用的标准方法是什么? 我需要的是围绕一个方法的钩子,我可以使用它来启动和停止计时器. 在 Java 中,我使用方面编程,aspectJ,来定义要分析的方法并注入字节码以实现相同的目的. 在 Scala 中是否有更自然的方法,我可以在其中定义一堆要在函数之前和之后调用的函数,而不会在过程中丢失任何静态类型? 解决方案 您是否希望在不更改要为其测量计时
..
我正在通过命令行编译 iPhone 应用程序(因此不涉及 XCode 选项),并且在使用 Instruments 进行分析时无法显示我的符号名称.我尝试了几个标志,例如 -gdawrf-2 和 -g,但都没有成功.我也尝试过使用 dsymutils 来生成 .dSYM 文件,但我不知道我应该如何使用它,因此也失败了. 任何帮助将不胜感激! 解决方案 Instruments 如何获取调
..
VBA 中是否有代码我可以用它包装一个函数,让我知道运行所需的时间,以便我可以比较函数的不同运行时间? 解决方案 除非您的函数非常慢,否则您将需要一个非常高分辨率的计时器.我所知道的最准确的是 QueryPerformanceCounter.谷歌它以获取更多信息.尝试将以下内容推送到一个类中,将其称为 CTimer 说,然后您可以在全局某处创建一个实例,只需调用 .StartCounter
..
我需要一个 C# 分析器. 虽然我不反对付费,但免费或至少有试用版的东西是理想的,因为提出采购订单需要时间. 有什么建议吗? 解决方案 您可以尝试以下操作: nprof(免费但有点旧) ProfileSharp(开源) .Net Memory Profiler(非常适合内存泄漏,有试用版) 编辑:Nprof 已被替换为 SlimTune 并适用于 .Net 4.
..
我需要知道我的对象在内存中消耗了多少字节(在 C# 中).例如,我的 Hashtable 或 SortedList 或 List 有多少. 解决方案 这可能不准确,但对我来说已经足够了 long size = 0;对象 o = 新对象();使用 (Stream s = new MemoryStream()) {BinaryFormatter 格式化程序 = new BinaryForma
..
我想了解某个函数在我的 C++ 程序中在 Linux 上执行所需的时间.之后,我想做一个速度比较.我看到了几个时间函数,但最终从 boost 得到了这个.时间: process_user_cpu_clock,捕获当前进程花费的用户-CPU时间 现在,我不清楚是否使用上述功能,我是否会获得 CPU 在该功能上花费的唯一时间? 其次,我找不到任何使用上述功能的示例.任何人都可以帮助我如何使用
..
我有一个在 Linux 上运行的 C++ 应用程序,我正在对其进行优化.如何确定代码的哪些区域运行缓慢? 解决方案 如果您的目标是使用分析器,请使用推荐的其中之一. 但是,如果您很着急并且可以在调试器下手动中断程序,而它主观上很慢,那么有一种简单的方法可以找到性能问题. 暂停几次,每次都查看调用堆栈.如果有一些代码浪费了一定百分比的时间,20% 或 50% 或其他什么,这就是您
..
分析 PHP 脚本的最简单方法是什么? 我很想添加一些东西,向我展示所有函数调用的转储以及它们花费的时间,但我也可以围绕特定函数放置一些东西. 我尝试使用 microtime 功能: $then = microtime();myFunc();$now = microtime();echo sprintf("已过:%f", $now-$then); 但这有时会给我负面的结果.另外,把
..
我想知道我的 Python 应用程序的内存使用情况,特别想知道哪些代码块/部分或对象消耗了最多的内存.Google 搜索显示一个商业版本是 Python 内存验证器(仅限 Windows).> 开源的是 PySizer 和 Heapy. 我没有尝试过任何人,所以我想知道哪一个是最好的考虑: 提供了大部分细节. 我必须对我的代码做最少或不做任何更改. 解决方案 guppy
..
我有一些正在运行的 SQL,在 asp.net c# 应用程序中返回结果/解析/显示等需要很长时间. 我安装了 SQL Server Management Studio 2008 R2 以连接到远程 SQL Server 2000 机器.是否有查询分析器或分析器可以用来查看发生了什么?我不确定我是否发送了太多请求,请求是否花费了太长时间,是否还有其他索引可以添加以加快速度等. 编辑:
..
在所有仪器跟踪模板中,我喜欢使用: 僵尸检测对象在哪里被过度释放,非常适合调试 EXEC_BAD_ACCESS 错误. 泄漏检测内存泄漏. 核心动画 w 颜色混合层来检测帧速率和半透明子视图,非常适合平滑 UITableView 滚动. 我总是听到人们说要分析我的应用程序的内存使用情况&性能. 为什么要分析内存使用情况 &表现?我的应用运行良好. 我该怎么做? 我使用
..
我正在开发一个 .NET 4.5 WPF 应用,但遇到了 UI 渲染性能问题. 在谷歌搜索之后,我发现了 WPF Performance Suite 页面,它准确描述了我需要的工具 - Visual Profiler.它允许查看 WPF 元素树并分析每个元素对总渲染时间的贡献. 唯一的问题是该页面指出该工具包含在针对 Windows 7 和 .NET 4.0 的 Microsoft W
..
我想限制JVM使用的最大内存.注意,这不仅仅是堆,我想限制这个进程使用的总内存. 解决方案 使用参数 -Xms -Xmx.在数字后使用 M 或 G 分别表示字节的 Megs 和 Gigs.-Xms 表示最小值,-Xmx 表示最大值.
..
列出您最喜欢的堆分析工具(例如 jprofiler、jmap 等).让我们为每个答案保留一个工具,并列出每个工具的优缺点. 解决方案 YourKit : http://www.yourkit.com/ 优点: 界面干净,速度快 它打开了一个 5-gig 的大型堆转储,jProfiler 笑得停了下来.它只需要 1-2 个 JVM 内存就可以做到这一点. 缺点:当然...
..
似乎来自 AMD 和 Intel 的大多数较新的 CPU 都将 rdtsc 实现为恒定速率计数器,从而避免了由于 TurboBoost 或省电设置等因素导致的频率变化引起的问题. 由于 rdtsc 比 QueryPerformanceCounter 更适合用于性能测量,因为它的开销要低得多,我想尽可能使用它. 如何可靠地检测 rdtsc 是否为恒定速率计数器? 解决方案 你可以
..