You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Jochen Theodorou (JIRA)" <ji...@apache.org> on 2017/01/26 20:28:24 UTC

[jira] [Resolved] (GROOVY-8023) Compile time increases exponentially when compiling Class implementing a Trait

     [ https://issues.apache.org/jira/browse/GROOVY-8023?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jochen Theodorou resolved GROOVY-8023.
--------------------------------------
       Resolution: Fixed
    Fix Version/s: 2.4.9

> Compile time increases exponentially when compiling Class implementing a Trait
> ------------------------------------------------------------------------------
>
>                 Key: GROOVY-8023
>                 URL: https://issues.apache.org/jira/browse/GROOVY-8023
>             Project: Groovy
>          Issue Type: Bug
>          Components: Compiler
>    Affects Versions: 2.4.4, 2.4.7
>            Reporter: Martin Klähn
>            Assignee: Jochen Theodorou
>             Fix For: 2.4.9
>
>
> Concidering the following classes
> {code:title=ATrait.groovy|borderStyle=solid}
> trait ATrait {
> }
> {code}
> and
> {code:title=AClass.groovy|borderStyle=solid}
> class AClass implements ATrait {
>     def String cleanName(String name) {
>         return name.
>             replaceAll(/alpha01/, '/').
>             replaceAll(/alpha02/, '/').
>             replaceAll(/alpha03/, '/').
>             replaceAll(/alpha04/, '/').
>             replaceAll(/alpha05/, '/').
>             replaceAll(/alpha06/, '/').
>             replaceAll(/alpha07/, '/').
>             replaceAll(/alpha08/, '/').
>             replaceAll(/alpha09/, '/').
>             replaceAll(/alpha10/, '/').
>             replaceAll(/alpha11/, '/').
>             replaceAll(/alpha12/, '/').
>             replaceAll(/alpha13/, '/').
>             replaceAll(/alpha14/, '/').
>             replaceAll(/alpha15/, '/').
>             replaceAll(/alpha16/, '/').
>             replaceAll(/alpha17/, '/').
>             replaceAll(/alpha18/, '/').
>             replaceAll(/alpha19/, '/').
>             replaceAll(/alpha20/, '/').
>             replaceAll(/alpha21/, '/').
>             replaceAll(/alpha22/, '/').
>             replaceAll(/alpha23/, '/').
> //            replaceAll(/alpha24/, '/').
> //            replaceAll(/alpha25/, '/').
>             replaceAll(/\//, ".").
>             replaceAll(/\.\.*/, ".").
>             replaceAll(/__+/, "_")
>     }
> }
> {code}
>  compiles in about 6 seconds. If I remove the import of the Trait 'ATrait' in 'AClass' the compile proces only takes about 1 second.
> If you consider the classes as the are shown above then the compile time nearly duplicates for every method call I add to the chained method call.
> With the replaceAll with alpha24 being compiled the compilation process takes approximately 11 seconds and with alpha 25 being compiled in conjunction with alpha24 the compilation takes approximately 20 seconds.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)