Where did you install Firefox from? Help Mozilla uncover 3rd party websites that offer problematic Firefox installation by taking part in our campaign. There will be swag, and you'll be featured in our blog if you manage to report at least 10 valid reports!

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