gpt4 book ai didi

适用于 Windows 的 Chrome 79 中的 Javascript 分析器 : What does self-time include?

转载 作者:行者123 更新时间:2023-12-02 22:09:07 27 4
gpt4 key购买 nike

在 Windows 版 Chrome 79 中运行浏览器内 Javascript::从类似的线程来看, self 时间似乎只包括在特定函数中运行内联代码的时间,而不包括运行子函数所花费的任何时间。

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

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

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

最佳答案

self-time includes only time to run the in-line code within a particular function, and excludes any time spent running sub functions

是的,“自时间”是给定函数中发生的刻度样本数。

I'm wondering if self-time includes time to prepare for those calls, etc?

“准备通话的时间”不是单独测量的。

I have noticed that some functions in my app that make a lot of sub-calls seem to have an inordinate amount of self-time

我猜你所观察到的情况是由内联引起的。当一个函数得到优化,并且编译器决定内联一个或多个被调用的函数时,随后分析器就不可能区分哪些指令最初来自哪里(内联可能有益的部分原因是因为它可以允许消除冗余,这自然会模糊给定指令“所属”的原始功能的界限)。这有道理吗?

如果您想在分析时排除内联的影响,可以关闭内联。在 Node/V8 中,您可以使用 --noturbo-inlined 运行。 (FWIW,在 C/C++ 中也是如此,GCC/Clang 理解 -fno-inline。)请注意,关闭内联会更改应用程序的性能特征,因此可能会产生误导性结果(具体来说:如果没有内联,您可能会观察到性能问题,而当打开内联时,该问题就会消失);但它也有助于查明缓慢的原因。

关于适用于 Windows 的 Chrome 79 中的 Javascript 分析器 : What does self-time include?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59615233/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com