Martin Klähn created GROOVY-8023:
------------------------------------
Summary: 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.7, 2.4.4
Reporter: Martin Klähn
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)