在浏览器中评测javascript时,如何获得更具体的信息?
我正在调试我编写的一些UI代码,下面是性能报告(您可以单击此处查看更大的屏幕截图): 总而言之,在浏览器中评测javascript时,如何获得更具体的信息?,javascript,performance,firefox,profiling,Javascript,Performance,Firefox,Profiling,我正在调试我编写的一些UI代码,下面是性能报告(您可以单击此处查看更大的屏幕截图): 总而言之,drawContainer速度很慢,但它是递归调用的,并不总是很慢。这份报告没有给我任何关于这个州的信息,所以我不知道是哪种情况让它变慢了 您可以看到它在堆栈的更高位置被调用,而不会出现显著的性能问题。对我来说,这意味着drawContainer可能很慢,但并不总是很慢。我不知道如何从Firefox profiler中获得更多的信息,但我也不知道如何在信息如此之少的情况下调试性能问题 有没有一种技
drawContainer
速度很慢,但它是递归调用的,并不总是很慢。这份报告没有给我任何关于这个州的信息,所以我不知道是哪种情况让它变慢了
您可以看到它在堆栈的更高位置被调用,而不会出现显著的性能问题。对我来说,这意味着
drawContainer
可能很慢,但并不总是很慢。我不知道如何从Firefox profiler中获得更多的信息,但我也不知道如何在信息如此之少的情况下调试性能问题
有没有一种技术可以用来计算当这个函数在没有数据的情况下运行缓慢时,传递给它的状态是什么
console.log
放在任何地方,都会大大降低这个函数的速度,并且会出现误报console.log
放在这里,它会打印出数千行,其中只有很少几行是相关的drawComponent
在到达drawLabel
之前调用drawContainer
三层。
如果这些调用中的任何一个发生了两次或更多次,而它可能只执行一次,那么您可以看到这将如何对所完成的工作量产生倍增效应
此外,您所看到的被称为“热路径”。
热路径的问题是,实际上您可能还有其他一些问题,这是一个大问题,但您看不到它,因为它分布在许多其他路径中,每个路径都不像图中所示的那样“热”,但加在一起更大
特别是,我对百分比小于70%的行感到好奇。剩下的时间都到哪里去了?你不能认为这是不可忽视的
这就是我使用随机停顿的原因。任何问题都逃不过它。我希望有一种方法可以暂停浏览器并检查堆栈示例。
(通常的反对意见是,您无法获取1000个手动堆叠样本。
通常的答案是——看看百分比。
任何含20%的东西,你会在10个样本中看到两次,或多或少。
那么你需要1000个样本的想法是从哪里来的呢?
看看1)inclusive%列
我不确定你指的是什么。在屏幕截图中可以看到吗?我确实看到了一个%列,但我不知道你所说的“inclusive%column”是什么意思@tieTYT:你可以说它是包含的,因为你在调用堆栈中的位置越高,百分比就越高。它是包含该行代码的堆栈样本的百分比。顶层例程位于每个堆栈样本上。其中,下一行是最多样本的一行。其中,下一个是样本最多的一个,以此类推。这就是“热门路线”。但正如我所说的,在炎热的道路上有很多地方大象可以藏身。