问题标签 [profiling]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
9 回答
13547 浏览

php - 分析 PHP 代码

我想找到一种方法来确定 PHP 中的每个函数以及 PHP 中的每个文件运行多长时间。我有一个旧的遗留 PHP 应用程序,我试图在其中找到“粗糙点”,所以我想客观地找出哪些例程和页面需要很长时间才能加载。

是否有任何预制工具可以做到这一点,或者我是否坚持使用 microtime 并构建自己的分析框架?

0 投票
4 回答
2671 浏览

perl - 如何分析 Perl Web 应用程序?

我正在开发一个使用 Perl 的网络应用程序,我需要研究加速应用程序的某些部分。

我想我会开始分析我希望调查的部分的特定调用。我已经对分析 Perl 代码进行了一些搜索,但不幸的是,我发现的大部分内容都表明我应该从命令行运行我的 perl 代码-d:DProf myapp。这对我来说不太适用,因为我的代码位于 Web 应用程序中。我确实找到了一种让分析与 apache 一起工作的方法,但不幸的是,从分析器返回的“最常用”模块都是 CPAN 模块——Class::xyz 等等等等。没有太大帮助。

除了我将“计时器”代码注入我希望分析的方法以仅针对这些方法之外,还有没有人知道一个好方法?我曾想过编写一个测试脚本并对其进行分析,但由于我正在处理的代码的性质,这需要比我希望做的更多的工作。

0 投票
3 回答
1754 浏览

apache-flex - Flex 事件后屏幕更新

我今天在调查一些非常奇怪的事情时遇到了这个话题。在我们的 Flex 应用程序中执行某些操作会导致渲染帧数猛增,从 12fps 到 ~30fps:加载的动画开始高速播放,GUI 开始锁定。

由于我在 Flex/Flash 上阅读的所有内容都强调了“帧速率限制在顶级应用程序中设置的 fps”这一点,因此这些额外渲染发生的唯一方法似乎是由于某些事件导致它们(在任何地方都没有对舞台的帧速率进行任何程序化更改)。由于它仅在我将更新逻辑放入 ENTER_FRAME 处理程序时发生,所以我试图找出可能发生的情况,这显然导致 Flex 变得疯狂渲染。

假设:我的更新函数中的某些内容正在触发立即屏幕更新,这会立即引发另一个 ENTER_FRAME,这意味着我的更新循环被调用,这会触发另一个立即屏幕更新,...

如果这是一个因素,我们的 GUI 中使用了 Flex 组件。我真的不知道下一步该去哪里。

澄清

  • 当我说事情加速时,这有两种表现形式。
  • 首先,我的 ENTER_FRAME 处理程序被更频繁地调用。
  • 其次,加载了内置循环动画的 Flash SWF 突然加速到它看起来很傻的程度。
  • 我没有使用updateAfterEvent,我只是在研究这个问题时才发现它存在。显然,Sprite 子类上的一些事件会自动调用它,我想知道这是否是根本原因。
  • 我根本没有直接搞乱渲染。背景动画会自动播放,因为它们具有来自 CS3 创作的内置时间线,我们的所有更新功能所做的只是更改 DisPlayObjects 的位置或添加/删除它们等

更新: 我在我的应用程序中添加了一个标签来打印 stage.frameRate,并发现在某些时候,它突然从 12 变为 1000(允许的最大值)。虽然向我的 ENTER_FRAME 处理程序添加一行来重置它是微不足道的,但这几乎没有什么大帮助。此外,即使这样做,渲染也一团糟。某些操作(例如发出警报弹出窗口)会使它重新焕发生机。不幸的是,我无法查看 Stage 类的源代码以在 setter 属性上设置断点。

这对于 Flex 加载“设置为 1000fps”的事情非常有趣。我们有几个 Flex 应用程序,它们都提供了一个通用接口。主应用程序负责通过 SWFLoader 类根据需要加载这些模块。但是,加载过程已经考虑到延迟加载......当 SWF 加载时,我们然后等待来自 SystemManager 的 APPLICATION_COMPLETE。收到此信息后,是否应该完成应用程序?

0 投票
1 回答
107 浏览

ruby-on-rails - 创建与 rails 请求分析器一起使用的脚本的最佳方法是什么?

rails scirptscript/performance/request需要一个会话脚本,生成此会话脚本的最佳方法是什么?

0 投票
5 回答
4452 浏览

linux - 配置文件程序在 Linux 上的速度

我有几个我想比较性能的程序变体。两者都执行基本相同的任务。

一个人在 C 和内存中完成所有工作。另一个调用外部实用程序并执行文件 IO。

我如何可靠地比较它们?

1) 使用“时间”获取“CPU 时间”有利于调用 system() 和执行 IO 的第二种变体。即使我将“系统”时间添加到“用户”时间,它仍然不会计算在 wait() 上阻塞的时间。

2) 我不能只为它们计时,因为它们在服务器上运行,并且可以随时从 CPU 上推出。平均 1000 次实验是一个软选项,因为我不知道我的服务器是如何使用的——它是集群上的虚拟机,有点复杂。

3)分析器没有帮助,因为它们会给我时间花在代码上,这再次有利于执行 system() 的版本

我需要将这些程序消耗的所有 CPU 时间累加起来,包括用户、内核、IO 和孩子的递归时间。

我预计这是一个常见问题,但似乎仍然没有找到解决方案。

(用 times() 解决 - 见下文。谢谢大家)

0 投票
8 回答
1070 浏览

java - 是否有类似于 Java/.Net 分析器的 SQL Server 分析器?

我喜欢分析 Java/.Net 应用程序以发现性能瓶颈或内存问题的方式。例如,通过查看调用树以及每个方法的执行时间和调用计数,很容易找到性能瓶颈。在 SQL Server 中,我有存储过程调用其他依赖于视图的存储过程,这类似于 Java/.Net 方法调用其他方法。所以看起来同一种探查器在这里会很有帮助。然而,我四处张望,一个也找不到。是否有人知道此类工具,无论是用于 SQL Server 还是任何其他 DBMS?

更新:感谢您对 SQL Server Profiler 的回复,但此工具非常有限。看看截图

0 投票
8 回答
16426 浏览

c++ - Windows 上的原生 C++ 有哪些好的分析器?

我正在寻找与本机 C++ 一起使用的分析器。它当然不一定是免费的,但是成本确实会影响购买决定。这是商业作品,所以我不能使用个人或学术许可的副本。

我正在寻找的主要功能是:

  • 流程级别指标
  • 组件级指标
  • 行级指标
  • 支持多线程代码
  • 可用性
  • 成本
  • 需要 Visual Studio 2005 Professional 支持(非常需要 VS 2008 Professional 支持)

我使用过 Intel 的 VTune 和 Compuware 的 Devpartner Performance Analysis Community Edition。

VTune 似乎非常强大,但它的学习曲线很陡峭。它也非常“模块化”,因此您必须弄清楚需要购买哪些零件。

DevPartner PACE 非常易于使用并提供所有关键功能,但它只有 45 天的试用期。许可版本(Visual C++ BoundsChecker Suite 的 DevPartner)每个席位大约 1400 美元,这是可行的,但 imo 有点高。

本机 C++ 和WHY有哪些好的分析器?


也可以看看:

你最喜欢的 C++ 分析工具是什么

0 投票
4 回答
20580 浏览

.net - .NET 中的高分辨率计时器

我想对我的代码进行一些基本的分析,但发现 C# 中的 DateTime.Now 只有大约 16 毫秒的分辨率。我还没有找到更好的计时结构。

0 投票
2 回答
161 浏览

asp.net - ASP.NET 1.1 性能问题

我正在对 1.1 应用程序进行一些分析,并发现了一个问题。似乎此功能要永远加载到某个页面上:

ParserCacheItem System.Web.UI.TemplateControlParser.CompileAndGetParserCacheItem(字符串,字符串,HttpContext)

我四处搜寻,但没有运气。有谁知道这个功能在做什么?如果我知道的话,也许它会对情况有所了解。

谢谢!?

0 投票
6 回答
14044 浏览

java - Java 应用程序中加载的类数中可能存在内存泄漏

我最近开始分析我正在使用 VisualVM 编写的 osgi java 应用程序。我注意到的一件事是,当应用程序开始(通过 JMS)向客户端发送数据时,加载的类的数量开始以稳定的速度增加。但是,堆大小和 PermGen 大小保持不变。即使停止发送数据,类的数量也不会下降。这是内存泄漏吗?我认为是这样,因为加载的类必须存储在某个地方,但是即使在我运行应用程序几个小时后,堆和 permgen 也不会增加。

有关我的分析应用程序的屏幕截图,请转到此处