Firefox中的javascript个人资料

时间:2009-10-27 04:52:48

标签: javascript profiling instrumentation

(我知道有些人已经问过有关js个人资料的问题,但如果我理解正确的话,这不是我需要的。)

我想跟踪javascript的执行以收集1)调用哪个函数的信息,2)调用函数的时间,以及3)函数的执行时间。

我想在线收集信息(已部署的代码),但不是内部收集。因此,权衡必须是轻松的。另外,我不想在调用函数之前和之后手动添加一行。但是,如果有一种可以动态检测代码的方法,那将会很棒。

提前致谢!

3 个答案:

答案 0 :(得分:3)

我认为没有任何系统可以让JavaScript自动跟踪函数启动的时间和函数停止的时间。这可能是你必须自己添加的东西。如果这是您所需要的,您可能需要考虑使用PHP来提供JavaScript并使用正则表达式来查找每个函数的开头和结尾以及正则表达式。

您的RegExp可能看起来像这样(完全未经测试,因此您必须进行实验):

/function [A-Za-z_$][A-Za-z0-9_$]*{(.*?)}/i

一旦有权访问函数内部,就可以用函数替换该值,以跟踪原始函数定义所包含的开头和结尾。

这样做的好处就是完全按照自己的意愿行事,而无需担心修改js代码的功能。然后服务器将完全处理它。

或者,不是直接调用函数,而是使用包装函数:

function wrapFunction( func, context, argList )
{ 
    // Replace with however you are storing this.
    console.log( new Date().getTime() );
    func.apply( context, argList );
    console.log( new Date().getTime() );
}

这比使服务器为您更新JS更加清晰。不幸的是,这也意味着必须手动重写JS。

我的建议是简单地调整日志记录语法并使用它。大多数记录器将输出时间戳,上下文,级别和特定消息。如果您只是在函数的开头和结尾调用记录器,它将完全符合您的要求。此外,由于许多都是可配置的,因此您可以将其显示到Firefox中的JS控制台,将信息发送到服务器,或者如果您愿意,则将其完全禁用。

这里有一个JS记录器列表:

JavaScript loggers

遗憾的是,这将要求您手动更新所有内容,但这似乎是获得90%开箱即用的最简单方法。

答案 1 :(得分:1)

FireBug中的探查器可能可以帮助您追踪缓慢的功能。

Here's a video详细说明了分析选项。 (索引:3:20)。

答案 2 :(得分:1)

console.profile([title])
//also see
console.trace()

http://getfirebug.com/wiki/index.php/Console_API