摘要:在字符串中搜索子字符串,是最基本的操作之一,我們經(jīng)常會(huì)遇到,我通常做的是,查看代碼中的其他地方,看看其他人都做了什么,然后做同樣的事情現(xiàn)在,我只是想提出一些最常用的選項(xiàng),以及它們之間的性能比較,以防您關(guān)心性能,以便當(dāng)涉及到將來的選擇時(shí),您知
在字符串中搜索子字符串,是最基本的操作之一,我們經(jīng)常會(huì)遇到,我通常做的是,查看代碼中的其他地方,看看其他人都做了什么,然后做同樣的事情!現(xiàn)在,我只是想提出一些最常用的選項(xiàng),以及它們之間的性能比較,以防您關(guān)心性能,以便當(dāng)涉及到將來的選擇時(shí),您知道哪一個(gè)是更好的選擇!代碼展示
下面是我在搜索字符串時(shí)經(jīng)常看到的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;性能基準(zhǔn)測(cè)試
如果你想知道,給出一個(gè)一般長(zhǎng)度的字符串,哪個(gè)會(huì)表現(xiàn)得更好,regex.test是最快的,其次是string.search(libraries by ES6),第三位屬于string.indexof方法:
前往測(cè)試頁(yè)面 →
如果放大測(cè)試字符串的規(guī)模會(huì)怎么樣?
我縮放這個(gè)字符串,把它放大1000倍(100萬字符,甚至1000萬字符),我看到string.indexof是一個(gè)贏家,雖然不是很多!
下面這是我的基準(zhǔn)測(cè)試的結(jié)果,我創(chuàng)建了1~1000萬個(gè)字符的字符串來進(jìn)行測(cè)試
基準(zhǔn)測(cè)試非常大的字符串,并重復(fù)子字符串1000次:
前往測(cè)試頁(yè)面 →
譯者注:這個(gè)鏈接提供的測(cè)試內(nèi)容感覺跟作者描述的測(cè)試內(nèi)容不符,可能鏈接是錯(cuò)的
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/110307.html
摘要:性能訪問字面量和局部變量的速度是最快的,訪問數(shù)組和對(duì)象成員相對(duì)較慢變量標(biāo)識(shí)符解析過程搜索執(zhí)行環(huán)境的作用域鏈,查找同名標(biāo)識(shí)符。建議將全局變量存儲(chǔ)到局部變量,加快讀寫速度。優(yōu)化建議將常用的跨作用域變量存儲(chǔ)到局部變量,然后直接訪問局部變量。 缺陷 這本書是2010年出版的,這本書談性能是有時(shí)效性的,現(xiàn)在馬上就2018年了,這幾年前端發(fā)展的速度是飛快的,書里面還有一些內(nèi)容考慮IE6、7、8的東...
摘要:前端性能優(yōu)化指南優(yōu)化緩存異步并不等于即時(shí)。操作性能問題主要有以下原因。發(fā)生在之前,所以相對(duì)來說會(huì)造成更多性能損耗。新引擎還對(duì)對(duì)象屬性訪問做了優(yōu)化,解決方案叫,簡(jiǎn)稱。代價(jià)是前置的掃描類型編譯優(yōu)化。數(shù)組,,閉包變量不在優(yōu)化范疇之列。 前端性能優(yōu)化指南 AJAX優(yōu)化 緩存AJAX: 異步并不等于即時(shí)。 請(qǐng)求使用GET: 當(dāng)使用XMLHttpRequest時(shí),而URL長(zhǎng)度不到2K...
摘要:是一個(gè)極度純凈的上傳插件,通過簡(jiǎn)單調(diào)整就可以融入到任何項(xiàng)目,支持多文件上傳上傳速率動(dòng)態(tài)控制真實(shí)進(jìn)度監(jiān)控分塊生成分塊上傳校驗(yàn)秒傳暫停取消等。 跨域?qū)W習(xí)筆記 前言: 當(dāng)一個(gè)資源,向與之所在服務(wù)器不同的域或端口請(qǐng)求另一個(gè)資源時(shí),這個(gè)HTTP請(qǐng)求,我們認(rèn)為是跨域的請(qǐng)求。出于安全考慮,瀏覽器會(huì)限制腳本發(fā)起的跨域HTTP請(qǐng)求。 那天后端讓我把token放到http請(qǐng)求頭字段里,說是為了和RN端統(tǒng)一...
摘要:作用域鏈查找作用域鏈的查找是逐層向上查找。而全局變量和閉包則會(huì)與之相反,繼續(xù)保存,所以使用用后需手動(dòng)標(biāo)記清除,以免造成內(nèi)存泄漏。獲取元素的屬性獲取元素的屬性等參考文檔高級(jí)程序設(shè)計(jì)作者以樂之名本文原創(chuàng),有不當(dāng)?shù)牡胤綒g迎指出。 showImg(https://segmentfault.com/img/bVburXV?w=500&h=399); 作用域鏈查找 作用域鏈的查找是逐層向上查找。查...
摘要:當(dāng)執(zhí)行上下文被創(chuàng)建時(shí),它的作用域鏈初始化為當(dāng)前運(yùn)行函數(shù)的屬性中的對(duì)象。該過程搜索執(zhí)行環(huán)境的作用域鏈,查找同名的標(biāo)識(shí)符。搜索實(shí)例成員比從字面量或局部變量中讀取數(shù)據(jù)代價(jià)更高,再加上遍歷原型鏈帶來的開銷,這讓性能問題更為嚴(yán)重。 最近在閱讀這本Nicholas C.Zakas(javascript高級(jí)程序設(shè)計(jì)作者)寫的最佳實(shí)踐、性能優(yōu)化類的書。記錄下主要知識(shí)。 加載和執(zhí)行 腳本位置 放在中的...
閱讀 3835·2021-11-24 09:39
閱讀 3753·2021-11-22 12:07
閱讀 1105·2021-11-04 16:10
閱讀 798·2021-09-07 09:59
閱讀 1902·2019-08-30 15:55
閱讀 935·2019-08-30 15:54
閱讀 724·2019-08-29 14:06
閱讀 2475·2019-08-27 10:54