我爲構建JavaScript框架代碼性能的基準構建了一個頁面。這裏是頁http://qatrix.com/benchmark/set-css-styleJavaScript基準測試代碼凍結瀏覽器?
我的想法是使用獨立的iframe來獨立運行的代碼,以便使其不衝突之一。該基準測試函數成功運行,並能夠回到合理的結果,但對於這個基準測試頁的大問題是,它會暫時冷凍 Web瀏覽器,同時代碼乳寧鼠標光標正在指針,無論它在哪裏,和一些鼠標懸停效果也不可用。
那麼,什麼`什麼問題?以及如何解決這個問題?我看到一些基準測試網站沒有這個問題,但他們只是在我認爲會與衝突相同的頁面下進行基準測試。
這裏是標杆的iframe下乳寧的代碼:
var benchmark_code = function()
{
<?php echo $_GET['code'] ?>
},
benchmark = function(times)
{
var start = new Date(),
i, end;
for(i = 0; i < times; i++)
{
if(i == 0)
{
try {
benchmark_code.call();
}
catch (e)
{
return e;
}
}
else
{
benchmark_code.call();
}
}
end = new Date();
return end - start;
};
和基準的源代碼在這裏(使用Qatrix框架):
http://qatrix.com/js/benchmark.js
你可能要更新的答案,包括JS UI線程上運行 - 它隱含的答案,但那些不知道的人可能不知道 – 2012-03-29 13:51:55
我試過了,但結果不正確。我認爲這是因爲setTimeout會使該函數異步運行。 – Angolao 2012-03-30 17:41:11
@anlai - 你將不得不改變循環的工作方式來異步工作。我在我的答案中添加了一個例子。 – jfriend00 2012-03-30 21:25:05