问题标签 [code-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 投票
0 回答
42 浏览

javascript - 有没有办法检查javascript函数是否有回调或异步操作?

是否有一个 API 或包(内置或第三方)可以采用一串 javascript 代码(特别是针对我的情况的函数),对其进行分析并判断该方法中是否有任何异步操作或回调

例如,如果有一个function

如果我这样做f1.toString().split("\n").join( "\\n" ),我会得到一个字符串

我希望能够分析代码并查看此字符串中是否有任何异步操作。可能吗?

谢谢。

0 投票
1 回答
3741 浏览

java - VisualVM 校准步骤在 Windows 10 中挂起

情况:

我已经在我的 Windows 10 周年版上安装了 VisualVM 1.3.8(而不是使用 JDK 8 附带的那个)。

我想用它来分析 Java (Play) 应用程序。

怎么了:

开始 CPU 分析时,它首先询问我是否需要校准,当发生这种情况时,它会挂在舞台上。

显示悬挂的显示器

我试过的:

我在 MacOS 8 上试过这个,它确实通过了校准步骤。

我编辑了 etc/visualvm.conf 以禁用 d3d 管道功能。

visualvm_default_options="-J-Dsun.java2d.d3d=false -J-client -J-Xms24m -J-Xmx256m -J-XX:+IgnoreUnrecognizedVMOptions -J-Dnetbeans.accept_license_class=com.sun.tools.visualvm.modules.startup .AcceptLicense -J-Dsun.jvmstat.perdata.syncWaitMs=10000 -J-Dsun.java2d.noddraw=true"

目标:

完成校准过程。

0 投票
1 回答
863 浏览

profiling - Google Compute Engine 中的 Linux 性能事件分析不起作用

我是使用 Google Compute Engine 的新手。我想使用 Linux perf 工具对我的应用程序进行一些各种性能事件测量并最终进行示例分析。我已经在我的 Ubuntu 16.04 LTS VM 上安装了 linux perf 工具。然而,即使是像循环这样的基本事件也会显示为“不支持”。我猜测底层 KVM 管理程序没有启用虚拟 PMU 支持,尽管我相信 KVM 确实通过非默认标志设置支持这一点。有什么办法可以让这个工作吗?

0 投票
0 回答
430 浏览

.net - 在分析期间防止使用 .ni.dll 文件

我目前正在尝试分析一个太慢的用例,其中 CPU 大部分时间都花在 EntityFramework.ni.dll 模块中。

不幸的是,它是一个.ni .dll,我没有相关的 PDB 文件,因此 VS 无法将其中的函数调用与相应的源代码相关联。

我在 SO 上看到有一种方法可以将其重新构建,但需要拥有相应的 EntityFramework.pdb 文件,而且我不知道如何在我的系统上发现该文件。

另一方面,我看到这里和那里确实有几个 EntityFramework.PDB 文件。

所以我想知道是否有一种方法可以防止在分析/调试会话期间使用 .ni.dll,这要归功于 VS 配置选项等?

请注意,现在我的项目中对 EntityFramework 的引用来自相应的 NuGet 包,如果可能,我宁愿避免在此级别更改任何内容。

我同意,如果存在这样的技巧,它将导致加载一个与已发现性能问题的模块不同的模块。但我希望它至少可以帮助我诊断问题,如果它仍然很慢,或者在调试时通过模块窗口找出在哪里可以找到原始 EntityFramework.dll。

在此先感谢您的帮助 !;)

0 投票
0 回答
60 浏览

c++ - 在分析期间排除从特定类调用的睡眠所花费的时间

我正在分析我的应用程序,我发现很多时间都在睡觉。有很多地方叫睡眠。睡眠被调用是因为线程在很多地方都在等待资源。但是有一些后台任务不时运行,执行一些清理活动等。这些作业在每次运行之间休眠。

我想以这样一种方式分析我的应用程序,即它不包括从后台作业调用时睡眠所花费的任何时间(这是一个特定的类,我们称之为“类 BackGroundJobs”)。我只是想获得应用程序/线程睡眠的时间,这不是因为这个。基本上,我想因此排除睡眠。有人可以告诉我该怎么做吗?

我试过这样做,

vsinstr.exe /exclude="BackGroundJobs::*" 可执行文件

并收集分析数据。

这只是 BackGroundJobs 类无法完成的工作,但仍包括 BackGroundJobs 调用的睡眠时间,因为睡眠不是 BackGroundJobs 的一部分。有人可以告诉我如何排除吗?

举个例子,数字都是虚构的例子,

Class::A::meth(班级在其活动中花费的时间 5s) --> Calls Sleep 20s Class::B::meth(班级在其活动中花费的时间 5s) --> Class Sleep 20s BackGroundJobs(班级在其活动中花费的时间 10s) --> Class Sleep 20s

在分析结果中:A类花费的时间::meth:5s B类花费的时间::meth:5s BackGroundJobs花费的时间:0s(不存在于报告中,因为它被排除在外) Sleep花费的时间:20s(由 A::meth)+20s(B::meth)+20s(BackGroundJobs::xxx) = 60s

我希望按如下方式计算睡眠时间,睡眠时间:20s(by A::meth)+20s(B::meth)+0s(BackGroundJobs::xxx) = 40s

我如何实现这一目标?

TIA

0 投票
1 回答
128 浏览

c++ - 测量可执行文件的数据和指令缓存大小

有没有办法在运行可执行文件时测量以下方面(编译 ac、c++ .... 代码后) - 使用的数据和指令缓存的大小(KB),或百分比 - CPU 使用百分比

0 投票
1 回答
554 浏览

java - 远程 JVM 的 JVisualVM CPU 分析

当我通过 JMX 将 JVisualVM 附加到远程 JVM 时,我看到的是“Sampler”选项卡而不是“Profiler”选项卡。我知道采样和分析之间是有区别的。我对 Profiling(特别是 CPU Profiling)更感兴趣。

JVisualVM 中是否首先为远程 JVM 提供了“Profiler”?如果是这样,请提及特定的 JVM 启动标志。如果它不可用,有什么替代方案?请理解我无法登录远程主机。

0 投票
0 回答
211 浏览

java - 使用 API 进行远程 JVM 分析

JVisualVM 可以通过 JMX 连接到远程 JVM。

我需要像 JVisualVM 那样从远程 JVM 收集 CPU 采样数据。看起来 JVisualVM 正在从远程 JVM 上暴露的 MBean 收集采样数据。

哪些类与 JVisualVM 源代码相关?

0 投票
1 回答
1084 浏览

asp.net - 如何获得 ASP.NET 请求的完整、有序的调用堆栈?

我正在尝试在我的 ASP.NET(Nancy,OWIN/System.Web 托管)应用程序中寻找一些性能问题。

通过分析(即 Stackify 工具),我注意到某些请求结束时存在一些“差距”,这不是不明显的调用(例如,不是数据库、HTTP、Redis 等)。

这是一个示例:(取自 Stackify 的前缀工具) 在此处输入图像描述

概括:

  1. 请求耗时 1289 毫秒
  2. “大多数”(热路径)由 SQL 查询获取。(我现在对此很好,可以优化但不是这个问题的重点)
  3. 几个“未跟踪的应用程序代码”间隙,占用超过 500 毫秒。

特别是最后一个间隙(340ms)我见过很多,是我调查的重点。

前缀允许自定义代码配置,允许通过将程序集列入白名单来获取有关这些“差距”的更多信息,但问题是我不知道这次花费的是哪个程序集。我的直觉是 Nancy/OWIN/一些依赖注入库等(我尝试将所有这些都列入白名单,但无济于事)。我只知道这不是我在这个 URL 中的直接代码。

所以我的问题是:

  1. 关于如何找出此请求的完整和有序调用堆栈,然后用作前缀白名单的任何想法?我可以使用的工具?
  2. 关于如何追查这一差距的任何“中心左翼”想法?另一个工具而不是 Prefix,它告诉我时间花在哪里?

谢谢!

0 投票
1 回答
170 浏览

php - 如何安装 YaxGUI 以在 Ubuntu 中使用潮流?

我刚刚安装了tideways(来自xhprof 的fork),发现了这个GUI YaxGUI,安装步骤对我来说还不够清楚。

安装您最喜欢的 PHP 和 Web 服务器组合
安装 MySQL 服务器
将项目克隆到某个文件夹
映射子文件夹 xhprof_html 以通过 HTTP 访问
移动 xhprof_lib/config.sample.php 到 xhprof_lib/config.php
编辑 xhprof_lib/config.php
更新SQL 服务器配置
更新服务的 URL(应该通过 HTTP 指向 xhprof_html)
更新 dot_binary 配置 - 否则没有调用图!
更新 controlIPs 变量以启用访问。
对于开发机器,您可以将其设置为 false 以禁用 IP 检查。
导入数据库模式(它只是 1 个表)
请参阅 xhprof_runs.php 中的 SQL
添加 PHP 配置以启用分析
如果使用 Apache,您可以编辑虚拟主机配置
添加 php_admin_value auto_prepend_file "/path/to/xhprof/external/header.php"
访问http://your-server/xhprof/xhprof_html/并成为惊讶!
要获得在那里显示的探查器信息,请使用 GET 变量 _profile=1 访问您的页面。
例如http://localhost/?_profile=1

我停在了这一点上:

导入数据库模式(它只是 1 个表)

而且不知道接下来要做什么。