在分析JavaScript时,如何忽略像jQuery这样的库?

Gij*_*ijs 15 javascript jquery profiling

当然,Firebug,Chrome的Web Inspector,Opera的Dragonfly和dynaTrace用于IE的AJAX工具都具有分析功能.但是,我还没有找到一个让我"忽略"图书馆的工具.

举个例子,假设我有以下纯JS/DOM代码:

function foo(node) {
    for (var i = 0; i < node.childNodes.length; i++) {
        node.childNodes[i].innerHTML = 'Test';
    }
}
Run Code Online (Sandbox Code Playgroud)

以及使用jQuery的类似代码:

function bar(jqNode) {
    jqNode.children().each(function() {
        $(this).html('Test');
    });
}
Run Code Online (Sandbox Code Playgroud)

(例子不是很好的代码,请保留它们,因为这不是重点)

如果你通过JS分析器抛出两个,你会发现在第一个例子中,只有一个函数,其中函数的"自己的时间"等于函数中花费的"总时间" - 因为DOM操作被计为'自己的时间'.

然而,在jQuery示例中,所有这些都被抽象为jQuery,这意味着"自己的时间"是最小的,并且所有时间都花在了jQuery上.

这使得它很难找到性能瓶颈,因为最高的"自己的时间"的功能jQuery.fixjQuery.init等(不告诉我任何事情写得很好,如何(或没有)我的代码),并与职能最长的'总时间'通常在调用堆栈中过高,以找出实际问题的位置(如果你有一个函数调用其他10个,一个函数'永远',调用函数将有更大'总时间' '但这不会让你弄清楚哪个被调用的函数花费的时间最长').

Rom*_*sse 1

您尝试过 John Resig 的分析器插件吗?

http://ejohn.org/blog/deep-profiling-jquery-apps/