【问题标题】:javascript profile in FirefoxFirefox 中的 javascript 配置文件
【发布时间】:2009-10-27 04:52:48
【问题描述】:

(我知道有些人已经问过关于 js 配置文件的问题,但如果我理解正确,那不是我需要的。)

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

我想在线收集信息(关于已部署的代码),而不是在内部收集。因此,权衡必须是轻的。另外,我不想在调用函数的前后手动添加一行。但是,如果有一种方法可以动态检测代码,那就太好了。

提前致谢!

【问题讨论】:

    标签: javascript profiling instrumentation


    【解决方案1】:

    我认为没有任何系统可以让 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% 所需内容的最简单方法。

    【讨论】:

    • 克里斯,感谢您的建议!与此同时,我刚刚发现了一些非常鼓舞人心的酷代码。看看这里:gist.github.com/189144
    【解决方案2】:

    也许FireBug 中的分析器可以帮助您跟踪慢速函数。

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

    【讨论】:

      【解决方案3】:
      console.profile([title])
      //also see
      console.trace()
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-08-07
        • 1970-01-01
        • 1970-01-01
        • 2016-09-11
        • 1970-01-01
        • 2017-06-28
        • 2016-08-28
        相关资源
        最近更新 更多