1

我正在研究 Web 浏览器中 JavaScript 解析器的速度,重要的是它需要易于演示。我想出了一个简单的测试 - 想法是每个脚本块都单独解析和执行,因此可以对一大块脚本进行计时:

<script>var start = new Date().getTime();</script>

<script>
    /*! jQuery v1.8.2 jquery.com | jquery.org/license */
    ...
</script>

<script>alert ( new Date().getTime() - start );</script>

从表面上看,这似乎可行,删除中间脚本块将导致可以忽略不计的时间。

但是,我不确定我的逻辑是否存在根本性缺陷。

4

4 回答 4

1

似乎答案大致是肯定的,但是为了获得合理的结果(就像其他任何事情一样),应该多次运行测试以平衡编译缓存和垃圾收集的影响。上面的测试可以很容易地放入 Parse-n-Load 库中:http ://carlos.bueno.org/2010/02/measuring-javascript-parse-and-load.html

谢谢你的帮助

于 2012-10-23T09:03:10.280 回答
0

您可能想要区分解析时间和执行时间。你可以做类似的事情

<script>start = Date.now();</script>
<script>
    parsed = Date.now();
    /*! jQuery v1.8.2 jquery.com | jquery.org/license */
    …
</script>
<script>var end = Date.now();
   alert ( "parsed in " + (parsed - start) + "ms" );
   alert ( "executed in " + (end - parsed) + "ms" );
   alert ( "overall time: " + (end - start) + "ms" );
</script>

有了它,您可能能够检测到缓存的解析树等。但是,要了解更多不同的信息,请查看您的开发人员工具,它们会在其分析器部分中显示此类信息。或者在 Opera 中,它包含在网络面板中脚本的加载过程中。

于 2012-10-23T09:19:07.607 回答
0

这可能会有所帮助!

var start = new Date().getTime();
var end = new Date().getTime();
var time = end - start;
alert('Execution time: ' + time);
于 2012-10-22T16:15:48.207 回答
0

如果你想对你的 JavaScript 进行基准测试,包括 MilliSeconds 等。

var t = new Date();
var start = t.getTime()*1000 + t.getMilliseconds();

/* do something*/

var t2 = new Date();
var end = t2.getTime()*1000 + t.getMilliseconds();

alert("The Code needed " + (end-start) + " milliseconds. That are " + parseInt((end-start)/1000) + " seconds.");
于 2012-10-22T16:17:56.617 回答