測試在這裏:http://jsperf.com/test-for-speed-of-various-conditionals爲什麼Safari會在這裏提供幾乎相反的結果?
我有興趣,如果別人所得到的是同樣的結果,而人們可能會想到爲什麼結果不同的瀏覽器不同(ESP W/Safari瀏覽器。)什麼。有趣的是火狐瀏覽器處理各種情況的民主化程度。
請告知,如果有什麼可怕的錯誤與我的方法:)
火狐3.6/Mac OSX版10.64: 開關= 824352個OPS /秒(14%速度較慢)
的if/else = 530062(44%慢,最慢)
散列/懶惰= 968035(最快)
散列/的if/else = 963765(0%較慢)
鉻6.0.472.63/Mac OSX 10.64:
開關= 10220039個操作/秒(慢62%)
如果/否則= 7744284(71%較慢,最慢)
散列/懶惰= 27130039(最快)
散列/的if/else = 25297370(6%較慢)
的Safari 5.0.2/Mac OSX上10.64:
開關= 15044132個操作/秒(最快)
如果/否則= 1793051(88較慢%,最慢)
散列/懶惰= 10381941(較慢30%)
散列/如果較慢/否則= 11119576(26% )
Opera 10.10/Mac OSX 10.64:
開關= 497238個OPS /秒(慢32%)
如果/否則= 250904(66%較慢,最慢)
散列/懶惰= 740520(最快)
哈希/如果(較慢14%)/否則= 634424
MSIE 8.0/Windows NT中:
開關= 176267個操作/秒(60%較慢)
如果/否則= 124783(72較慢%,最慢)
散列/懶惰= 447421(最快)
哈希/ if/else = 442,736(14%較慢)
又是什麼問題? – spender 2010-09-29 19:00:00
一般的建議是不使用switch(),而是選擇某種查找。除了Safari之外,所有瀏覽器都提供了這個建議 - 其中交換機實際上是最快的,大幅度減少。我首先想知道我是否產生了幻覺,其次,如果有人知道這是爲什麼(尤其是Chrome沒有出現這種行爲)。 – 2010-09-29 19:06:05
儘管Chrome和Safari都使用WebKit進行渲染,但它們具有不同的JavaScript引擎(V8 for Chrome和Nitro for Safari)。 – Chuck 2010-09-29 20:35:38