页面加载期间执行的Javascript行数

时间:2012-11-13 16:02:42

标签: javascript internet-explorer profiler

我有一个用例,我需要在我的网页加载时获取执行的Javascript行总数。

我面临的问题是,当一定数量的JS执行超过时,浏览器会发出警报(如果是IE,则认为是500万)并且页面被挂起。

我使用了IE开发人员工具栏中提供的探查器,但是它给出了所调用的JS函数的总数,但没有给出执行的行数/总数。

感谢任何帮助。

由于

4 个答案:

答案 0 :(得分:1)

这可能有所帮助:

http://www-archive.mozilla.org/performance/jsprofiler.html

  

第一行指定从中收集时间的js文件。   下面的每一行格式为:[A,B] C {D-E} F {G,H,I}

D - > JS文件中函数的基线号 E - > JS文件中函数的范围(最后)行号

答案 1 :(得分:1)

首先,您应该重新设计代码;在没有将控制权交还给浏览器的情况下,500万条声明无论如何都需要很多代码,想象一下移动浏览器将如何挣扎。

找出执行语句数量的一种方法是检测代码,为代码中的每个语句添加一条语句,以计算执行代码的次数,从而有效地使代码中的语句数量翻倍。 / p>

还有一些代码覆盖工具可以在浏览器中运行,而无需完全检测代码;谷歌搜索“javascript代码覆盖率”提供了大量可以使用的浏览器扩展,例如hrtimer

答案 2 :(得分:1)

将其拆分为较小的块并在超时后调用 - 这可以解决IE问题。 e.g。

somethingBig();
somethingElseBig();

代替写:

somethingBig();
setTimeout(somethingElseBig);

答案 3 :(得分:0)

在BASH:

wc -l file.js

在PHP中:

<?php
$c=0;
$file_handle = fopen("file.js", "r");
while (!feof($file_handle)) {
    $line = fgets($file_handle);
    $c++;
}
fclose($file_handle);
print "$c lines.\n";
?>

在Node.js中:

var i, count = 0, js=require('fs').createReadStream('file.js');

js.on('data', function(chunk) {
    for (i=0; i < chunk.length; ++i)
        if (chunk[i] == 10) count++;
});

js.on('end', function() {
    console.log(count);
});

尝试使用minification来降低您的行号。

但这似乎是一个非常糟糕的代码。