(我知道有些人已经问过关于 js 配置文件的问题,但如果我理解正确,那不是我所需要的。)
我想跟踪javascript的执行以收集1)调用哪个函数,2)调用函数的时间,以及3)函数的执行时间的信息。
我想在线收集信息(关于已部署的代码),而不是在内部收集信息。因此,权衡必须是轻的。另外,我不想在调用函数的前后手动添加一行。但是,如果有一种方法可以动态检测代码,那就太好了。
提前致谢!
(我知道有些人已经问过关于 js 配置文件的问题,但如果我理解正确,那不是我所需要的。)
我想跟踪javascript的执行以收集1)调用哪个函数,2)调用函数的时间,以及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% 所需内容的最简单方法。
console.profile([title])
//also see
console.trace()