(我知道有些人已经问过有关js个人资料的问题,但如果我理解正确的话,这不是我需要的。)
我想跟踪javascript的执行以收集1)调用哪个函数的信息,2)调用函数的时间,以及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记录器列表:
遗憾的是,这将要求您手动更新所有内容,但这似乎是获得90%开箱即用的最简单方法。
答案 1 :(得分:1)
FireBug中的探查器可能可以帮助您追踪缓慢的功能。
Here's a video详细说明了分析选项。 (索引:3:20)。
答案 2 :(得分:1)
console.profile([title])
//also see
console.trace()