如何在 PhantomJS 中分析 javascript

Posted

技术标签:

【中文标题】如何在 PhantomJS 中分析 javascript【英文标题】:How to profile javascript in PhantomJS 【发布时间】:2016-02-29 16:45:35 【问题描述】:

我们使用 PhantomJs 2.0 来截取网页截图。我们发现处理一个特定页面需要几分钟时间。此页面在 Chrome 中加载时似乎没有此问题(或至少没有任何可比较的程度)。

我相信这是因为 javascript 挂起/运行非常缓慢。在挂起期间,Phantom 正在使用大量 CPU(尽管只有一个内核)。它似乎没有占用异常数量的内存。我相当有信心 javascript 是罪魁祸首,因为我可以从日志中看到所有请求都很快完成,但是在页面加载后 Phantom 会挂起一段时间并且不会运行任何东西(我认为这是因为 Phantom 都是单线程的所以如果页面仍在运行 javascript,我的 Phantom 脚本将不会运行任何东西)。

我想调试并尝试了解 JS 的哪一部分花费了这么长时间,但我不知道如何在 Phantom 中解决这个问题。例如,我似乎无法从console.profile/console.profileEnd 收集任何输出。如何分析 Phantom 中运行的 javascript 以找到瓶颈?

【问题讨论】:

如果你有 Intellij,你可以看看spy-js。 【参考方案1】:

我通过grunt-phantomas 使用Phantomas。它是一个与 PhantomJS 集成的工具,用于分析各种与性能相关的指标。绝对值得一试。如果它不能完全满足您的需求,您可以查看源代码并了解它们如何与 PhantomJS 集成并获取数据。

【讨论】:

以上是关于如何在 PhantomJS 中分析 javascript的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Ruby 中分析 `require` 语句?

如何在生产环境中分析请求?

如何在 Ruby on Rails 中分析请求?

如何在 Android Studio 中分析测试?

如何在 Python 中分析异常处理?

如何在 Template::Toolkit 中分析模板性能?