2012-10-22 101 views
1

我正在研究Web瀏覽器中JavaScript解析器的速度,重要的是它需要很容易演示。我想出了一個簡單的測試 - 的想法是,每個腳本塊進行解析,並單獨執行,所以腳本塊大可定時: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> 

從表面上看,這似乎工作,消除中間腳本塊導致時間可以忽略不計。

但我不確定我的邏輯沒有根本的缺陷。

+0

另外,您可能會發現瀏覽提交給JSPerf的一些性能測試所採用的策略很有趣:http://jsperf.com/browse – rjz

+1

您會對此有一個定時的想法,但不要不要忘記緩存對加載和解析時間的影響。如果瀏覽器之前看過腳本,它可能會緩存已編譯的代碼。另外,你不是第一個對分析速度感到好奇的人。 http://carlos.bueno.org/2010/02/measuring-javascript-parse-and-load.html –

+0

我經常使用JSPerf,但我還沒有想到在那裏適當實現這一點的方法。你指出這是一個很好的資源是正確的。 @MikeMcCaughan如果只是在文檔上刷新它會產生巨大的差異,我很快就會指出,這隻能在禁用緩存或新環境下完成。 –

回答

0

這可能有幫助!

var start = new Date().getTime(); 
var end = new Date().getTime(); 
var time = end - start; 
alert('Execution time: ' + time); 
+1

這是什麼不同我已經在做? –

0

如果你想基準你的JavaScript,包括毫秒等

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."); 
+0

我不知道這與我已經做了什麼不同,getTime()方法已經返回毫秒。但是,謝謝你指出getMilliseconds()方法,它可能很有用。 –

+0

我很抱歉,當時在PHP .. – tobspr

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中,它包含在網絡面板中腳本的加載過程中。