[jira] Created: (JRUBY-3771) Very long runtime (apparently exponential in string size) with certain regexps and gsub!

View: New views
2 Messages — Rating Filter:   Alert me  

[jira] Created: (JRUBY-3771) Very long runtime (apparently exponential in string size) with certain regexps and gsub!

by JIRA jira@codehaus.org :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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



Re: [jira] Created: (JRUBY-3771) Very long runtime (apparently exponential in string size) with certain regexps and gsub!

by Hirotsugu Asari :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


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