Important Notice: We're experiencing email notification issues. If you've posted a question in the community forums recently, please check your profile manually for responses while we're working to fix this.

On Monday the 3rd of March, around 5pm UTC (9am PT) users may experience a brief period of downtime while one of our underlying services is under maintenance.

Search Support

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.

Learn More

Drop of performance between FF31 and FF32 for matching a regexp

  • 1 reply
  • 2 have this problem
  • 37 views
  • Last reply by 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 ?

All Replies (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