2011-03-24 62 views
2

我在HTML5中构建了一个图形密集型站点,它大量使用canvas上下文的drawImage()函数。在Windows 7上的IE9中,性能非常流畅,但在Firefox 4中,事情变得不稳定。我试图找出瓶颈,以便开始优化。是否可以使用Firebug分析内置的JavaScript函数?

如果我使用Firebug 1.7.0的JavaScript性能分析功能,我可以看到我自己的函数的统计信息,但我也希望看到对内置JavaScript函数的调用。有没有办法在Firebug或其他工具中做到这一点?

作为一种解决方法,我想我可以通过将事情分解成许多小函数来使分析粒度更细化,但我宁愿我的设计不受简化配置的驱动。

更新:回想起这个问题,我发现有问题的内置函数不是真正的JavaScript函数,而是主机提供的函数。在这种情况下,它们是来自浏览器的DOM对象。只是想我会澄清技术细节。

回答

1

和关闭考虑这几天后,我想出了一个新的解决方案,并写了一博客文章吧:

http://andrewtwest.com/2011/03/26/profiling-built-in-javascript-functions-with-firebug/

此方法执行以下操作:

  1. 检查Firebug控制台 是否打开。
  2. 重写和 组合是否包含原生函数和 用户定义的函数。

这些步骤结合在一起提供了一种配置DOM功能的方法,除非您正在调试,否则不会影响原始脚本代码。

2

最后我用它Firebug不能让你能够剖析原生代码。

你可以做的是使你自己的功能,只是调用你想调用的本地件。由于依次代码:

ctx.fillRect(50,50,50,50);` 

分为:

// wrap in function 
function fillR() { 
ctx.fillRect(50,50,50,50); 
}; 

// call it immediately afterwards 
fillR(); 

然后你就可以得到fillR的统计信息。不是最好的解决方法,但它可能有用。

+0

是的,我想过这个解决方法(“把事情分解成许多小函数”),但我希望尽可能避免它。我们拭目以待。 – 2011-03-24 19:51:00

1

你可能会尝试使用Mozilla的JS调试器Venkman。目前,addons.mozilla.org上的版本在Firefox 4.0中被破解。

你可以通过善变的最新版本,并与Firefox 4.0的工作:

hg clone http://hg.mozilla.org/venkman/ 
cd venkman/xpi 
./makexpi.py 
firefox venkman-0.9.88.1.xpi 
+0

很棒的建议。你确定最新版本的Venkman支持FF 4.0吗?我可以试试这个。 – 2011-03-24 19:52:05

+0

是的,最新的Mercurial构建工作。其实,就像你我试图调试一些画布的东西,虽然输出比Firebug更详细,但我仍然遇到一些麻烦钉了画布的方法。 – 2011-03-24 20:02:46

相关问题