Google Chrome 和NodeJs 检查器允许生成具有以下 JSON 结构的 cpu 配置文件:
摘抄
{
"nodes": [
{
"callFrame": {
"functionName": "(root)",
"scriptId": "0",
"url": "",
"lineNumber": -1,
"columnNumber": -1
},
"children": [2, 71],
"hitCount": 0,
"id": 1
}
],
"startTime": 194737272346,
"endTime": 194737292265,
"samples": [1, 1, 1],
"timeDeltas": [7489, 1185, 1271]
}
Run Code Online (Sandbox Code Playgroud)
来自文档:https ://chromedevtools.github.io/devtools-protocol/tot/Profiler#type-Profile
nodesarray ProfileNode - 配置文件节点的列表。第一项是根节点。
startTimenumber - 分析开始时间戳(以微秒为单位)。
endTimenumber - 分析结束时间戳(以微秒为单位)。
samplesarray [integer] - 样本顶部节点的 ID。
timeDeltasarray [integer] - 相邻样本之间的时间间隔(以微秒为单位)。第一个增量是相对于配置文件开始时间的。
有多个库,例如d3-flame-graph,允许将所有内容渲染 …
当我使用 perf 进行分析时,_PyEval_EvalFrameDefaultCPU 使用率位于顶部。
但我不知道那是什么。我怎样才能避免这个功能?
如何为使用 Clang LLVM 编译的 C++ 代码生成图形代码分析报告?
我将哪些命令行选项传递给 clang++ 以指示它在执行代码时收集分析数据?
收集到的分析数据存储在哪个文件中?
将收集到的配置文件数据转换为图形报告的后处理步骤是什么,该报告显示每个函数被调用的频率、每个函数花费的时间百分比以及每个函数是从哪些函数调用的(类似于https:// /s3-us-west-2.amazonaws.com/brunorijsman-public/example-rift-python-code-profile.png)?
我可以完全控制 C++ 源代码和 Makefile。
它必须是 LLVM clang++ (GNU g++ 对我来说不是一个选择)。Xcode 也不适合我。
我想计算一个函数在我的程序中被调用的次数。该方法在不同的对象中调用,我不想传递一个变量并让它们全部添加到其中。
IntelliJ 调试器中是否有一个功能可以计算函数总体调用的频率?
具体来说,我的程序是用于图问题的搜索树算法,我想计算生成的搜索树有多少个不同的分支。每个分支都对应于上述函数的调用。
下面是一个代码块,perf record 标记为造成所有 L1-dcache 未命中的 10%,但该块完全是 zmm 寄存器之间的移动。这是 perf 命令字符串:
perf record -e L1-dcache-load-misses -c 10000 -a -- ./Program_to_Test.exe
Run Code Online (Sandbox Code Playgroud)
代码块:
Round:
vmulpd zmm1,zmm0,zmm28
VCVTTPD2QQ zmm0{k7},zmm1
VCVTUQQ2PD zmm2{k7},zmm0
vsubpd zmm3,zmm1,zmm2
vmulpd zmm4,zmm3,zmm27
VCVTTPD2QQ zmm5{k7}{z},zmm4
VPCMPGTQ k2,zmm5,zmm26
VPCMPEQQ k3 {k7},zmm5,zmm26
KADDQ k1,k2,k3
VCVTQQ2PD zmm2{k7},zmm0
VDIVPD zmm1{k7},zmm2,zmm28 ; Divide by 100
VPXORQ zmm2{k7},zmm2,zmm2
vmovupd zmm2,zmm1
VADDPD zmm2{k1},zmm1,zmm25
Run Code Online (Sandbox Code Playgroud)
对于该代码块,我使用其他 L1 度量(例如 l1d.replacement)得到了类似的结果。
我的问题是,一个仅是 zmm 寄存器移动的块如何会产生 L1 缓存未命中?我认为寄存器根本不会进入内存。事实上,最后一次内存访问是在该代码块之上的10条指令;其他9条指令都是寄存器到寄存器指令。
什么工具、方法最适合分别获取每个WP 函数的执行时间。理想情况下,我希望看到一个列表,如下图所示:
这是“调试栏”插件的 UI,带有“慢动作”插件,这是一个好的开始,但现在对我来说还不够,因为它只显示钩子本身的总运行时间,而不显示各个函数(回调)一一附加到它们上。
见下图:
因此,我也很高兴看到每个功能的单独时间。
到目前为止,这个插件让我最接近这个,它肯定是一个有价值的产品,但是有可能对其进行改进吗?--> 我们是否知道任何现成的解决方案(自定义代码或产品)?
(作为参考,这里是我在研究这个主题期间发现的一个较旧的相关问题。在这里我计划检查 Xdebug,但首先我想找到 Wordpress 特定的工具。)
感谢您的任何帮助/提示!
最好的,
维克托
我通过 tox 运行一个特定的测试用例:
tox -e myenv foo.tests.test_foo.SomeTestCase
Run Code Online (Sandbox Code Playgroud)
这需要 30 秒。
测试本身非常简单且快速。但在测试开始运行之前似乎发生了很多事情。
我如何跟踪/分析测试运行之前发生的事情?
我想仅分析 tox 不会有帮助,因为 tox 没有多大作用。Tox 会产生耗时过长的子进程。
我想计算在C中函数调用期间经过的时间,精度为1纳秒.
C中是否有可用的定时器功能?
如果是,请提供示例代码段.
伪代码
Timer.Start()
foo();
Timer.Stop()
Display time elapsed in execution of foo()
Run Code Online (Sandbox Code Playgroud)
环境细节: - 在RHEL机器上使用gcc 3.4编译器
我开发了几个T-SQL存储过程,它们迭代了相当多的数据.第一个需要花费几分钟来运行一年的数据,这对我的目的来说很好.第二个使用相同的结构/算法,虽然数据量更多,需要两个小时,这是无法忍受的.
我正在使用SQL-Server和Query-Analyzer.是否有任何分析工具,如果有,它们如何工作?
或者,根据下面的伪代码,有关如何提高速度的任何想法?简而言之,我使用游标迭代来自直接SELECT(来自几个连接表)的数据.然后我根据值构建一个INSERT语句,并将结果INSERT到另一个表中.一些SELECTed变量在INSERTion之前需要一些操作.包括从日期值,一些基本浮点运算和一些字符串连接中提取一些日期部分.
---粗略算法/伪代码
DECLARE <necessary variables>
DECLARE @cmd varchar(1000)
DECLARE @insert varchar(100) = 'INSERT INTO MyTable COL1, COL2, ... COLN, VALUES('
DECLARE MyCursor Cursor FOR
SELECT <columns> FROM TABLE_1 t1
INNER JOIN TABLE_2 t2 on t1.key = t2.foreignKey
INNER JOIN TABLE_3 t3 on t2.key = t3.foreignKey
OPEN MyCursor
FETCH NEXT FROM MyCursor INTO @VAL1, @VAL2, ..., @VALn
WHILE @@FETCH_STATUS = 0
BEGIN
@F = @VAL2 / 1.1 --- float op
@S = @VAL3 + ' ' + @VAL1
SET …Run Code Online (Sandbox Code Playgroud) 我是Java新手,我想问一下.
在服务器上配置应用程序是否有意义,我只有控制台?
有没有合理的控制台分析器?
或者我应该只在localhost上分析应用程序?
profiling ×10
debugging ×2
java ×2
perf ×2
python ×2
c ×1
c++ ×1
clang ×1
cpu ×1
javascript ×1
linux ×1
llvm ×1
methods ×1
optimization ×1
performance ×1
php ×1
python-3.x ×1
sql-server ×1
t-sql ×1
timer ×1
tox ×1
wordpress ×1
x86-64 ×1