【发布时间】:2015-06-06 12:46:14
【问题描述】:
我有一个高度递归的 JavaScript 函数,它不调用其他 JavaScript 函数。它只是调用自身执行一些简单逻辑并调用系统函数的一个函数(Array.slice、Array.splice、Array.push 等)。
我正在尝试对其进行优化,但是 Chrome 和 Firefox(该网站工作的唯一浏览器)DevTools 和 Firebug 的分析器没有显示比函数调用更具体的任何内容。 Visual Studio 有一个好东西,在分析应用程序后,它会告诉您在函数的每一行上花费了多少执行百分比,这真的很有帮助。
我尝试将函数分解为更小的函数,但随后函数调用开销膨胀,占用了我的大部分执行时间。
【问题讨论】:
-
如果您可以在随机时间手动暂停它并显示调用堆栈,那将显示当前正在执行的每一行代码。做 10 次。你看到的每一行代码或函数的成本大约是你在堆栈上看到它的时间的一小部分。这给出了非常粗略的测量,但虽然时间测量很粗略,但关于为什么它需要时间的信息非常详细。毕竟,这才是你真正想知道的,不是吗?
-
据我了解,它要求对每个语句进行分析。因此 JavaScript 作者可以了解例如是使用正则表达式匹配字符串还是手动解析字符串,对吧?
-
@SebastianZartner 正确
-
因此,增强不同的 DevTools 是一个有效的请求。请参阅下面的答案。
-
即使将函数分解为更小的函数,虽然仍然有很多函数调用开销,但函数之间的相对成本(代表行)仍然是准确的,不是吗?
标签: javascript profiling firebug google-chrome-devtools firefox-developer-tools