On Jun 23, 2009, at 6:03 AM, David R. MacIver (JIRA) wrote:

Very long runtime (apparently exponential in string size) with certain regexps and gsub!
----------------------------------------------------------------------------------------

                Key: JRUBY-3771
                URL: http://jira.codehaus.org/browse/JRUBY-3771
            Project: JRuby
         Issue Type: Bug
   Affects Versions: JRuby 1.3.1
        Environment: java version "1.6.0_0"
OpenJDK Runtime Environment (IcedTea6 1.4.1) (6b14-1.4.1-0ubuntu7)
OpenJDK Server VM (build 14.0-b08, mixed mode
           Reporter: David R. MacIver
           Assignee: Thomas E Enebo


The following code appears to take forever to run:

{{{
cleaner = /((?-mix:(\"|\(|\)|;|-|\:|-|\*|,))| |(?-mix:(!|\?|\.)+))+$/
string = "................................................... . Dear friends! . ."
string.gsub!(cleaner, "")
puts string
}}}

The exact runtime appears to be a function of the number of leading .s

This appears to also be the case in cruby 1.9, so this is presumably an inherited bug.

--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira



---------------------------------------------------------------------
To unsubscribe from this list, please visit:

   http://xircles.codehaus.org/manage_email




That's because your regular expression is quite flawed.

Dropping the first of the two +s seems to speed it up quite a bit. (I can't tell if it fits your requirements, but if it does, it's worth considering.)

Anyway, I don't think it's a bug.


cleaner = /((?-mix:(\"|\(|\)|;|-|\:|-|\*|,))| |(?-mix:(!|\?|\.)))+$/
string = "................................................... . Dear friends! . .."
string.gsub!(cleaner, "")
puts string

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

   http://xircles.codehaus.org/manage_email


Reply via email to