Chrome 79 for Windows中的Javascript Profiler:自学时间包括什么?

问题描述 投票:0回答:1

[在Windows的Chrome 79中运行浏览器内的Java脚本::从相似的线程看来,自学时间仅包括在特定功能内运行内联代码的时间,而没有花费在运行子功能上的时间。

但是,实际上,我已经注意到,与其他几乎没有子调用的类似大小的函数相比,我的应用程序中一些进行很多子调用的功能似乎具有过分的自拍时间。 (即,我正在比较具有相对相似操作的两个函数以及操作数)。这两个功能的自拍时间可能相差10倍。

我想知道自我时间是否包括准备这些电话的时间,等等?

[也许,带有子调用的函数的较高自拍时间可能是由于V8的后期优化所致,因此在探查器的采样期间,我正在比较优化函数的自拍时间。与尚未优化的功能相比,该功能在优化之前的运行速度可能慢100倍。也许这是罪魁祸首?

javascript google-chrome v8 profiler
1个回答
0
投票

self-time仅包括在特定功能内运行内联代码的时间,不包括运行子功能所花费的时间

是的,“自我时间”是在给定函数中出现的滴答样本的数量。

我想知道自我时间是否包括准备这些电话的时间,等等?

“准备呼叫的时间”未单独测量。

[我已经注意到我的应用程序中一些进行大量子调用的功能似乎花费了过多的自拍时间

我想您正在观察的内容是由内联引起的。当某个函数得到优化后,编译器决定内联一个或多个被调用的函数,则事件探查器之后就无法区分出哪条指令最初来自何处(内联之所以有益的部分原因是因为它可以消除冗余,自然模糊了给定指令“所属”的原始功能的代码行)。这有意义吗?

如果要在分析时排除内联的影响,则可以关闭内联。在Node / V8中,可以使用--noturbo-inlining运行。 (FWIW,在C / C ++中也是如此,其中GCC / Clang理解-fno-inline。)请注意,关闭内联会更改应用程序的性能特征,因此可能会产生误导性的结果(特别是:内联,您会发现一个性能问题,当启用内联时,该问题将消失。但它也有助于查明缓慢的问题。

© www.soinside.com 2019 - 2024. All rights reserved.