成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Javascript里面最常用的6種查找字符串的方式——以及它們的性能測試

graf / 2065人閱讀

摘要:在字符串中搜索子字符串,是最基本的操作之一,我們經(jīng)常會遇到,我通常做的是,查看代碼中的其他地方,看看其他人都做了什么,然后做同樣的事情現(xiàn)在,我只是想提出一些最常用的選項,以及它們之間的性能比較,以防您關(guān)心性能,以便當涉及到將來的選擇時,您知

在字符串中搜索子字符串,是最基本的操作之一,我們經(jīng)常會遇到,我通常做的是,查看代碼中的其他地方,看看其他人都做了什么,然后做同樣的事情!現(xiàn)在,我只是想提出一些最常用的選項,以及它們之間的性能比較,以防您關(guān)心性能,以便當涉及到將來的選擇時,您知道哪一個是更好的選擇!
代碼展示

下面是我在搜索字符串時經(jīng)??吹降?種不同的方法:

// 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;
性能基準測試

如果你想知道,給出一個一般長度的字符串,哪個會表現(xiàn)得更好,regex.test是最快的,其次是string.search(libraries by ES6),第三位屬于string.indexof方法:


前往測試頁面 →

如果放大測試字符串的規(guī)模會怎么樣?

我縮放這個字符串,把它放大1000倍(100萬字符,甚至1000萬字符),我看到string.indexof是一個贏家,雖然不是很多!
下面這是我的基準測試的結(jié)果,我創(chuàng)建了1~1000萬個字符的字符串來進行測試
基準測試非常大的字符串,并重復子字符串1000次:

前往測試頁面 →
譯者注:這個鏈接提供的測試內(nèi)容感覺跟作者描述的測試內(nèi)容不符,可能鏈接是錯的

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/110307.html

相關(guān)文章

  • 【讀書筆記】《高性能JavaScript

    摘要:性能訪問字面量和局部變量的速度是最快的,訪問數(shù)組和對象成員相對較慢變量標識符解析過程搜索執(zhí)行環(huán)境的作用域鏈,查找同名標識符。建議將全局變量存儲到局部變量,加快讀寫速度。優(yōu)化建議將常用的跨作用域變量存儲到局部變量,然后直接訪問局部變量。 缺陷 這本書是2010年出版的,這本書談性能是有時效性的,現(xiàn)在馬上就2018年了,這幾年前端發(fā)展的速度是飛快的,書里面還有一些內(nèi)容考慮IE6、7、8的東...

    chengjianhua 評論0 收藏0
  • 前端性能優(yōu)化指南

    摘要:前端性能優(yōu)化指南優(yōu)化緩存異步并不等于即時。操作性能問題主要有以下原因。發(fā)生在之前,所以相對來說會造成更多性能損耗。新引擎還對對象屬性訪問做了優(yōu)化,解決方案叫,簡稱。代價是前置的掃描類型編譯優(yōu)化。數(shù)組,,閉包變量不在優(yōu)化范疇之列。 前端性能優(yōu)化指南 AJAX優(yōu)化 緩存AJAX: 異步并不等于即時。 請求使用GET: 當使用XMLHttpRequest時,而URL長度不到2K...

    Pink 評論0 收藏0
  • API

    摘要:是一個極度純凈的上傳插件,通過簡單調(diào)整就可以融入到任何項目,支持多文件上傳上傳速率動態(tài)控制真實進度監(jiān)控分塊生成分塊上傳校驗秒傳暫停取消等。 跨域?qū)W習筆記 前言: 當一個資源,向與之所在服務器不同的域或端口請求另一個資源時,這個HTTP請求,我們認為是跨域的請求。出于安全考慮,瀏覽器會限制腳本發(fā)起的跨域HTTP請求。 那天后端讓我把token放到http請求頭字段里,說是為了和RN端統(tǒng)一...

    lsxiao 評論0 收藏0
  • 讀書筆記(03) - 性能 - JavaScript高級程序設計

    摘要:作用域鏈查找作用域鏈的查找是逐層向上查找。而全局變量和閉包則會與之相反,繼續(xù)保存,所以使用用后需手動標記清除,以免造成內(nèi)存泄漏。獲取元素的屬性獲取元素的屬性等參考文檔高級程序設計作者以樂之名本文原創(chuàng),有不當?shù)牡胤綒g迎指出。 showImg(https://segmentfault.com/img/bVburXV?w=500&h=399); 作用域鏈查找 作用域鏈的查找是逐層向上查找。查...

    warnerwu 評論0 收藏0
  • 《高性能javascript》閱讀摘要

    摘要:當執(zhí)行上下文被創(chuàng)建時,它的作用域鏈初始化為當前運行函數(shù)的屬性中的對象。該過程搜索執(zhí)行環(huán)境的作用域鏈,查找同名的標識符。搜索實例成員比從字面量或局部變量中讀取數(shù)據(jù)代價更高,再加上遍歷原型鏈帶來的開銷,這讓性能問題更為嚴重。 最近在閱讀這本Nicholas C.Zakas(javascript高級程序設計作者)寫的最佳實踐、性能優(yōu)化類的書。記錄下主要知識。 加載和執(zhí)行 腳本位置 放在中的...

    duan199226 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<