我一直在尝试使用Firebug的分析器来更好地理解我们看到的一些JavaScript性能问题的来源,但我对输出有点困惑.
当我分析一些代码时,探查器报告Profile(464.323 ms,26,412个呼叫).我怀疑464.323 ms是这些26,412次调用的执行时间的总和.
但是,当我深入查看详细结果时,我会看到平均执行时间大于464.323 ms的单个结果,例如,平均时间最长的结果会报告以下详细信息:
Calls: **1**
Percent: **0%**
Own Time: **0.006 ms**
Time: **783.506 ms**
Avg: **783.506 ms**
Min: **783.506 ms**
Max: **783.506 ms**
Run Code Online (Sandbox Code Playgroud)
另一个结果报告:
Calls: **4**
Percent: **0.01%**
Own Time: **0.032 ms**
Time: **785.279 ms**
Avg: **196.32 ms**
Min: **0.012 ms**
Max: **783.741 ms**
Run Code Online (Sandbox Code Playgroud)
在这两个结果之间,时间结果的总和远远大于464.323.
那么,这些不同的数字是什么意思呢?我应该相信哪些?
我还在学习Java的绳索,如果对此有明显的答案,那就很抱歉.我有一个占用大量内存的程序,我想找到一种方法来减少它的使用,但在阅读了很多SO问题后,我认为我需要在开始优化之前证明问题出在哪里.
所以这就是我所做的,我在程序开始时添加了一个断点并运行它,然后我启动了visualVM并让它描述了内存(我也在netbeans中做同样的事情只是为了比较结果而且它们是相同的).我的问题是我不知道如何阅读它们,我得到的最高区域只是说char[],我看不到任何代码或任何东西(这是有道理的,因为visualvm连接到jvm并且看不到我的来源,但是netbeans也没有向我显示源代码,因为它在执行cpu profiling时也是如此.
基本上我想知道的是哪个变量(希望更多的细节,比如在哪种方法中)所有的内存都在使用,所以我可以专注于在那里工作.有一个简单的方法来做到这一点?我现在正在使用eclipse和java进行开发(并且专门为分析安装了visualVM和netbeans,但是我愿意安装其他任何你认为完成这项工作的东西).
编辑:理想情况下,我正在寻找将我的所有对象和大小排序的东西(所以我可以看到哪一个占用内存).目前它返回诸如string []或int []之类的通用信息,但我想知道它所指的是哪个对象,所以我可以努力使其大小更加优化.
我想对我的代码进行一些基本的分析,但发现C#中的DateTime.Now只有大约16毫秒的分辨率.必须有更好的时间保留我尚未找到的构造.
是否有SQL Server Expess的SQL Server Profiler?也许是一个开源的?或者只是一个工具,可以帮助我查看传递给数据库的查询?
在Python 2中有一些工具,但一切似乎都是旧的和过时的.
我发现了PySizer和Heapy但是一切似乎都是面向Python2的,需要付出很多努力来移植.
objgraph很有趣,但仍然不是一个完全工作的分析器
使用哪种工具?
python profiling memory-profiling memory-leak-detector python-3.x
我已经在我的XAMPP安装中启用了xDebug分析,它运行正常.
现在我想询问是否有办法在我的源代码中说什么时候开始使用xDebug进行分析.
更具体地说,我想创建一个WordPress插件,我想说,从插件的起点开始分析并停止在插件的结束点进行分析.
那可能吗?
注意:以上只是一个例子.它可以是CakePHP插件或我可能需要分析的新PHP类
我对分析我的Node.js应用程序很感兴趣.我用--prof旗帜启动它,并获得了一个v8.log文件.我采用了windows-tick-processor并获得了一个人类可读的分析日志.在问题的底部是日志文件中的一些小摘录,我完全无法理解.
我得到了滴答统计方法.我不明白totalvs nonlib意味着什么.此外,我不明白为什么有些事情的前缀LazyCompile,Function,Stub或其他条款.
我希望得到的最佳答案是刻度处理器输出格式的完整文档/指南,完整地解释每个术语,结构等...
除此之外,我只是不明白lazy-compile是什么.是汇编吗?是不是每个函数都只编译一次?那么编译怎么可能是我的应用程序执行的重要部分?该应用程序运行了几个小时来生成此日志,我假设内部JavaScript编译需要几毫秒.这表明懒惰编译是每个函数不会发生一次,但在某种代码评估期间会发生?这是否意味着每当我有一个函数定义(例如嵌套函数)时,内部函数每次都会"懒惰编译"?
我在任何地方都找不到任何关于此的信息,我一直在谷歌搜索DAYS ......
我也意识到有很多探查器标志.其他参考资料也欢迎.
[JavaScript]: ticks total nonlib name 88414 7.9% 20.1% LazyCompile: *getUniqueId C:\n\dev\SCNA\infra\lib\node-js\utils\general-utils.js:16 22797 2.0% 5.2% LazyCompile: *keys native v8natives.js:333 14524 1.3% 3.3% LazyCompile: Socket._flush C:\n\dev\SCNA\runtime-environment\load-generator\node_modules\zmq\lib\index.js:365 12896 1.2% 2.9% LazyCompile: BasicSerializeObject native json.js:244 12346 1.1% 2.8% LazyCompile: BasicJSONSerialize native json.js:274 9327 0.8% 2.1% LazyCompile: * C:\n\dev\SCNA\runtime-environment\load-generator\node_modules\zmq\lib\index.js:194 7606 0.7% 1.7% LazyCompile: *parse native json.js:55 5937 0.5% 1.4% LazyCompile: *split native string.js:554 5138 …
问题
您好,我正在使用加速库来创建一个应用程序,允许用户以交互方式调用处理图像的函数,这就是为什么我要使用ghc api来扩展ghci.
问题是当从shell运行已编译的可执行文件时,计算在100ms(略小于80)下完成,而在ghci中运行相同的编译代码则需要超过100ms(平均大于140)才能完成.
资源
示例代码+执行日志:https: //gist.github.com/zgredzik/15a437c87d3d8d03b8fc
描述
首先:测试是在编译CUDA内核之后运行的(编译本身又增加了2秒,但事实并非如此).
从shell运行已编译的可执行文件时,计算在10ms内完成.(shell first run并second shell run传递不同的参数以确保数据不会缓存在任何地方).
当尝试从ghci运行相同的代码并摆弄输入数据时,计算时间超过100毫秒.我理解解释的代码比编译的代码慢,但是我在ghci会话中加载相同的编译代码并调用相同的顶级绑定(packedFunction).我已明确键入它以确保它是专门的(与使用SPECIALIZED编译指示相同的结果).
但是,如果我main在ghci中运行函数(即使:set args在连续调用之间更改输入数据),计算确实需要不到10毫秒.
编译Main.hs与ghc -o main Main.hs -O2 -dynamic -threaded
我想知道开销来自哪里.有没有人有任何关于为什么会这样的建议?
由remdezx发布的示例的简化版本:
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Data.Array.Accelerate as A
import Data.Array.Accelerate.CUDA as C
import Data.Time.Clock (diffUTCTime, getCurrentTime)
main :: IO ()
main = do
start <- getCurrentTime
print $ C.run $ A.maximum $ A.map (+1) …Run Code Online (Sandbox Code Playgroud) 我在MS网站上读到SQL Azure不支持SQL事件探查器.人们用什么来分析在这个平台上运行的查询?
profiling ×10
profiler ×3
php ×2
.net ×1
azure ×1
firebug ×1
ghci ×1
graph ×1
haskell ×1
java ×1
javascript ×1
node.js ×1
performance ×1
python ×1
python-3.x ×1
sql-server ×1
timer ×1
v8 ×1
visualvm ×1
xdebug ×1