我有一个用例,我需要在我的网页加载时获取执行的Javascript行总数。
我面临的问题是,当一定数量的JS执行超过时,浏览器会发出警报(如果是IE,则认为是500万)并且页面被挂起。
我使用了IE开发人员工具栏中提供的探查器,但是它给出了所调用的JS函数的总数,但没有给出执行的行数/总数。
感谢任何帮助。
由于
答案 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来降低您的行号。
但这似乎是一个非常糟糕的代码。