婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > 淺談js正則字面量//與new RegExp的執(zhí)行效率

淺談js正則字面量//與new RegExp的執(zhí)行效率

熱門(mén)標(biāo)簽:地圖標(biāo)注教學(xué)點(diǎn) 400電話辦理電話辦理 外呼系統(tǒng)無(wú)呼出路由是什么原因 ai電話機(jī)器人搭建 甘肅醫(yī)療外呼系統(tǒng)排名 梅縣地圖標(biāo)注 貴港公司如何申請(qǐng)400電話 呼叫系統(tǒng)外呼只能兩次 西藏智能外呼系統(tǒng)代理商

前幾天談了正則匹配 js 字符串的問(wèn)題:《js 正則學(xué)習(xí)小記之匹配字符串》 和 《js 正則學(xué)習(xí)小記之匹配字符串優(yōu)化篇》。
里面講到了優(yōu)化正則起到提升性能的問(wèn)題,但是能提升多少呢?
于是我去測(cè)試了,發(fā)現(xiàn)TMD幾乎微乎其微,我用1千字符串進(jìn)行100萬(wàn)次匹配測(cè)試,優(yōu)不優(yōu)化根本沒(méi)區(qū)別。

這不科學(xué),我白看了這么多天正則,上天這是在玩弄我么。

突然我想到了 compile 方法,然后去測(cè)試了下,奇跡出現(xiàn)了,果然優(yōu)化過(guò)的快了不少。

但這是為什么呢?
于是我翻閱資料,在 MDN 上找到了 RegExp Methods
這里說(shuō) compile 方法已被棄用!這不科學(xué)。。。
在 stackoverflow 上發(fā)現(xiàn)這篇文章 Javascript: what's the point of RegExp.compile()? 
文章大意是說(shuō)其實(shí) 直接 new RegExp 即可,compile 幾乎用不到。
于是乎我修改了代碼再來(lái)一次。

果然,直接 new RegExp 效果和 compile 是一樣的。
不過(guò)這只是 nodejs 下的結(jié)果,我們?nèi)タ纯锤鱾€(gè)瀏覽器下的結(jié)果如何吧。

!doctype html>
html lang="en"> 
head>
 meta charset="UTF-8">
 title>test/title>
/head>
 
body>
 script>
  var str1 = '"' + Array(100).join("x") + '123456\\\'78\"90"';
  var str2 = '"' + Array(100).join("x") + 'ooo\\oooo\nxxxx\"xxxx"';
   // 這里寫(xiě)100,小一點(diǎn),防止等半天,F(xiàn)F那慫貨就半天
  console.log("字符串1:", str1);
  console.log("字符串2:", str2);
 
  var reg1 = /"(?:\\.|[^"])*"/;
  var reg2 = /"(?:[^"\\]|\[\d\D])*"/;
 
  var reg11 = new RegExp('"(?:\.|[^"])*"');
  var reg22 = new RegExp('"(?:[^"\\]|\[\d\D])*"');
 
  var n = 1e6; //100萬(wàn)次測(cè)試
 
  test("reg1", reg1);
  test("reg2", reg2);
  test("reg11", reg11);
  test("reg22", reg22);
 
  function test(name, re) {
   console.time(name);
   for (var i = 0; i  n; i++) {
    str1.match(re);
    str2.match(re);
   }
   console.timeEnd(name);
  }
 /script>
/body> 
/html>


chrome


firefox


IE11


IE8 (我調(diào)用了一個(gè)插件模擬控制臺(tái)實(shí)現(xiàn)IE6-8調(diào)試輸出的)

很明顯,第一名是 chrome (以 reg22 那個(gè)優(yōu)化過(guò)的為準(zhǔn)),這個(gè)號(hào)稱(chēng)武裝到牙齒的貨,果然夠new逼。
不過(guò) firefox 這貨,竟然連 IE8 都比不過(guò),是不是太慫了點(diǎn)。

優(yōu)化過(guò)的 正則 比沒(méi)優(yōu)化的快,那是肯定的。
但是 正則字面量 和 new RegExp 比,那就不是一個(gè)檔次了。
為什么有如此大的差距呢?
其實(shí)我也沒(méi)搞清楚。

以前看到很多文章都說(shuō) 字面量 會(huì)比 new 對(duì)象 形式效率高,但是在正則這里,好像不是這么回事。
不過(guò)也不能直接否認(rèn)這個(gè)觀點(diǎn),因?yàn)槲乙恢倍加米置媪康模?jiǎn)潔美觀,用著方便才是王道。

我覺(jué)得在數(shù)據(jù)量大,或者重復(fù)操作次數(shù)多的時(shí)候用 new RegExp 是很必要的。
因?yàn)槟阋部吹搅诵阅芴嵘@么多。
當(dāng)然前提條件是你的正則必須優(yōu)化,正則沒(méi)優(yōu)化的情況,兩種差不多。
所以?xún)?yōu)化你的正則,然后用 new RegExp 可以大幅度提升程序的性能。

PS: IE11 是個(gè)特例,這貨從來(lái)不安套路出牌。

好了今天的分享完畢,你們都蠢蠢欲動(dòng)了吧,快去把正則各種new起來(lái)吧。

您可能感興趣的文章:
  • 如何用Node.js編寫(xiě)內(nèi)存效率高的應(yīng)用程序
  • JavaScript查看代碼運(yùn)行效率console.time()與console.timeEnd()用法
  • JavaScript提高加載和執(zhí)行效率的方法
  • JavaScript中for循環(huán)的幾種寫(xiě)法與效率總結(jié)
  • JavaScript數(shù)組去重的幾種方法效率測(cè)試
  • 如何高效率去掉js數(shù)組中的重復(fù)項(xiàng)
  • 深入探究JavaScript中for循環(huán)的效率問(wèn)題及相關(guān)優(yōu)化
  • JavaScript判斷是否為數(shù)組的3種方法及效率比較
  • 原生JS中應(yīng)該禁止出現(xiàn)的寫(xiě)法

標(biāo)簽:海口 大興安嶺 本溪 湖州 泰安 涼山 常州 哈密

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《淺談js正則字面量//與new RegExp的執(zhí)行效率》,本文關(guān)鍵詞  淺談,正則,字面,量,與,new,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《淺談js正則字面量//與new RegExp的執(zhí)行效率》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于淺談js正則字面量//與new RegExp的執(zhí)行效率的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 梨树县| 景东| 乌鲁木齐市| 平陆县| 剑阁县| 濮阳县| 遵化市| 晋城| 塘沽区| 建始县| 曲麻莱县| 平顺县| 紫阳县| 苏尼特右旗| 洪雅县| 桑日县| 星子县| 延川县| 措勤县| 厦门市| 孝感市| 潮州市| 修水县| 应用必备| 夹江县| 苗栗县| 永济市| 雷波县| 高州市| 云安县| 文安县| 元朗区| 红安县| 济源市| 吉安县| 乌恰县| 永胜县| 嘉禾县| 南郑县| 浠水县| 濮阳县|