2009-06-08 47 views

回答

12

那麼,得到答案的最好方法是花2分鐘時間寫出一個循環,它可以做到千次並檢查螢火蟲,看看哪一個是更快;)

我不得不優化大量的字符串工作在MXHR和我的經驗,字符串方法明顯比當前瀏覽器RegExps快。儘可能在最短的字符串上使用RegExps,並儘可能使用String方法做所有事情。

例如,我用這個小號碼在我當前的代碼:

var mime = mimeAndPayload.shift().split('Content-Type:', 2)[1].split(";", 1)[0].replace(' ', ''); 

這是醜陋的地獄,但信不信由你,它比在高負荷下的等效正則表達式顯著更快。

1

我期望使用split()會快得多。這取決於很多細節,線數與長度,正則表達式的複雜度等。

+0

感謝您抽出寶貴的時間來回答。我也希望原生方法更快,但沒有什麼比IMO這個問題的經驗更好。無論如何,謝謝=) – BYK 2009-06-08 20:17:46

+1

這答案是基於經驗:)如dfltr說,你需要爲你的具體情況進行實驗。 – RedFilter 2009-06-08 20:50:45

9

雖然這兩年半的時間晚了,希望這有助於一些線索就此事做任何未來的觀衆:http://jsperf.com/split-join-vs-regex-replace(包括對多個瀏覽器基準測試結果,以及功能性基準代碼本身)