var
isIE = $.browser.msie && !$.support.opacity,
isIE6 = isIE && $.browser.version < 7;
哪個會更快:
if(isIE6){ doSomething(); }
else { doSomethingElse(); }
OR
if(!isIE6){ doSomethingElse(); }
else { doSomething(); }
難道他們究竟在速度方面的一樣嗎?
var
isIE = $.browser.msie && !$.support.opacity,
isIE6 = isIE && $.browser.version < 7;
哪個會更快:
if(isIE6){ doSomething(); }
else { doSomethingElse(); }
OR
if(!isIE6){ doSomethingElse(); }
else { doSomething(); }
難道他們究竟在速度方面的一樣嗎?
在1,000,000次迭代循環中給出此測試,沒有區別。
var test = true;
var count = 1000000;
var stop, start = new Date();
while(count--) {
if(test) ; // Change to !test
else ;
}
stop = new Date();
alert(stop - start);
測試Firefox,Safari & IE8。
在系統上運行的其他進程在每個瀏覽器中執行多次測試後,返回相同的總體變化(以毫秒爲單位),而不考慮!
。
感謝此片段,它直接進入我的片段文件夾。 btw是這種「測試速度」的方式嗎?或者是否有更高效的工具,而不需要混淆代碼。 謝謝, – adardesign 2010-06-18 13:59:45
@adardesign - 嗯,這是我使用的方法,因爲我不經常這樣做。你可以用一些函數創建一個單獨的js文件來啓動和停止計時器,並顯示結果,因此代碼中唯一的混亂是函數調用。 * XIII *提到了您可以嘗試的分析器。我確定還有其他的速度測試實用程序。嘗試搜索信息的stackoverflow。如果你找不到任何東西,你可以在這裏提出一個關於javascript運行時性能測試最佳方法的問題。 – user113716 2010-06-18 17:36:46
我想技術上第一個可能會更快,因爲它比第二個操作更少(只是檢查值),但是說實話,你不太可能注意到差異。
第一個會更快,因爲它需要少一步(!操作符確實會觸發與if語句分開的操作)。
這就是說,不會有真正的區別。
這是爲什麼被低估了兩次?這是一個合法的編程問題,並附有相關的代碼示例。如果你不喜歡回答基本問題,那麼就繼續前進。請告訴我** faq **的哪一部分,這違反了它應該得票。 – user113716 2010-06-17 15:45:08
同意 - 只能猜測有人認爲這個問題是代表嫖娼,但我賠償一個投票 – calumbrodie 2010-06-17 15:48:44
@calumbrodie - 以前沒有聽說過這個詞。 :o)如果這就是他們的想法,他們的反對票對他們的意圖沒有任何效果,因爲我也給了一個補償性的投票。 – user113716 2010-06-17 16:02:40