摘要:在字符串中搜索子字符串,是最基本的操作之一,我們經常會遇到,我通常做的是,查看代碼中的其他地方,看看其他人都做了什么,然后做同樣的事情現在,我只是想提出一些最常用的選項,以及它們之間的性能比較,以防您關心性能,以便當涉及到將來的選擇時,您知
在字符串中搜索子字符串,是最基本的操作之一,我們經常會遇到,我通常做的是,查看代碼中的其他地方,看看其他人都做了什么,然后做同樣的事情!現在,我只是想提出一些最常用的選項,以及它們之間的性能比較,以防您關心性能,以便當涉及到將來的選擇時,您知道哪一個是更好的選擇!代碼展示
下面是我在搜索字符串時經常看到的6種不同的方法:
// 1. includes (introduced in ES6) var string = "string to search for substring", substring = "sea"; string.includes(substring); // 2. RegExp: test var string = "string to search for substring", expr = /sea/; // no quotes here expr.test(string); //3. string.search var string = "string to search for substring", expr = "/sea/"; string.search(expr); //4. lodash: includes var string = "string to search for substring", substring = "sea"; _.includes(string, substring); // 5. string.match var string = "string to search for substring", expr = "/sea/"; string.match(expr); // 3. string.indexOf var string = "string to search for substring", substring = "sea"; string.indexOf(substring) !== -1;性能基準測試
如果你想知道,給出一個一般長度的字符串,哪個會表現得更好,regex.test是最快的,其次是string.search(libraries by ES6),第三位屬于string.indexof方法:
前往測試頁面 →
如果放大測試字符串的規模會怎么樣?
我縮放這個字符串,把它放大1000倍(100萬字符,甚至1000萬字符),我看到string.indexof是一個贏家,雖然不是很多!
下面這是我的基準測試的結果,我創建了1~1000萬個字符的字符串來進行測試
基準測試非常大的字符串,并重復子字符串1000次:
前往測試頁面 →
譯者注:這個鏈接提供的測試內容感覺跟作者描述的測試內容不符,可能鏈接是錯的
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/110307.html
摘要:性能訪問字面量和局部變量的速度是最快的,訪問數組和對象成員相對較慢變量標識符解析過程搜索執行環境的作用域鏈,查找同名標識符。建議將全局變量存儲到局部變量,加快讀寫速度。優化建議將常用的跨作用域變量存儲到局部變量,然后直接訪問局部變量。 缺陷 這本書是2010年出版的,這本書談性能是有時效性的,現在馬上就2018年了,這幾年前端發展的速度是飛快的,書里面還有一些內容考慮IE6、7、8的東...
摘要:作用域鏈查找作用域鏈的查找是逐層向上查找。而全局變量和閉包則會與之相反,繼續保存,所以使用用后需手動標記清除,以免造成內存泄漏。獲取元素的屬性獲取元素的屬性等參考文檔高級程序設計作者以樂之名本文原創,有不當的地方歡迎指出。 showImg(https://segmentfault.com/img/bVburXV?w=500&h=399); 作用域鏈查找 作用域鏈的查找是逐層向上查找。查...
摘要:當執行上下文被創建時,它的作用域鏈初始化為當前運行函數的屬性中的對象。該過程搜索執行環境的作用域鏈,查找同名的標識符。搜索實例成員比從字面量或局部變量中讀取數據代價更高,再加上遍歷原型鏈帶來的開銷,這讓性能問題更為嚴重。 最近在閱讀這本Nicholas C.Zakas(javascript高級程序設計作者)寫的最佳實踐、性能優化類的書。記錄下主要知識。 加載和執行 腳本位置 放在中的...
閱讀 3841·2021-11-24 09:39
閱讀 3759·2021-11-22 12:07
閱讀 1112·2021-11-04 16:10
閱讀 807·2021-09-07 09:59
閱讀 1906·2019-08-30 15:55
閱讀 944·2019-08-30 15:54
閱讀 731·2019-08-29 14:06
閱讀 2481·2019-08-27 10:54