Mozilla サポートの検索

Avoid support scams. We will never ask you to call or text a phone number or share personal information. Please report suspicious activity using the “Report Abuse” option.

詳しく学ぶ

このスレッドはアーカイブに保管されました。 必要であれば新たに質問してください。

Drop of performance between FF31 and FF32 for matching a regexp

  • 1 件の返信
  • 2 人がこの問題に困っています
  • 37 回表示
  • 最後の返信者: cor-el

more options

Hello,

I'm trying to fix an addon on firefox 32 (sometime freezes the browser), I finally found the problem : it is a regexp execusion (with REGEXP.test(STRING) ).

For example, firstly load this page (I know it is a script) in FF31 : https://developer.cdn.mozilla.net/media/js/main-min.js?build=db5035d Display the developer tools and in the JS console copy/paste the following portion of code (I've simplified to a maximum to only let the problematic part of the regexp) :

test = "((\\S|\\s)+;\\s*\\n){10,}"; reg = new RegExp(test, "i"); reg.test(document.body.innerHTML)

The script terminates quickly (less than a second).

Do the same in FF32 : the brower becomes unresponsive and finally ask for stopping the execution of the script.

Could you help me understand why FF32 does not have the same behavior as FF31 ? Is there a workaround ?

Hello, I'm trying to fix an addon on firefox 32 (sometime freezes the browser), I finally found the problem : it is a regexp execusion (with REGEXP.test(STRING) ). For example, firstly load this page (I know it is a script) in FF31 : https://developer.cdn.mozilla.net/media/js/main-min.js?build=db5035d Display the developer tools and in the JS console copy/paste the following portion of code (I've simplified to a maximum to only let the problematic part of the regexp) : test = "((\\S|\\s)+;\\s*\\n){10,}"; reg = new RegExp(test, "i"); reg.test(document.body.innerHTML) The script terminates quickly (less than a second). Do the same in FF32 : the brower becomes unresponsive and finally ask for stopping the execution of the script. Could you help me understand why FF32 does not have the same behavior as FF31 ? Is there a workaround ?

すべての返信 (1)

more options

I can confirm that this happens with those STR. It fails when the result is false.

test = "((\\S|\\s)+;\\s*\\n){3,}"; reg = new RegExp(test, "i"); reg.test(document.body.innerHTML) -> true
test = "((\\S|\\s)+;\\s*\\n){4,}"; reg = new RegExp(test, "i"); reg.test(document.body.innerHTML) -> false

I see that you have filed a bug report about this.

  • bug 1070935 - Drop of performance between FF31 and FF32 when executing a regexp