[ 
https://issues.apache.org/jira/browse/GROOVY-11287?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17810423#comment-17810423
 ] 

Eric Milles commented on GROOVY-11287:
--------------------------------------

We do try to do some of this, especially for strings.  If "two" was a static 
final field then it should get the constant folded.  Because of dynamic 
programming -- like overriding the plus method/operator -- this kind of 
optimization may be restricted to Static Compilation.

> Perform constant folding for basic math calculations in CS
> ----------------------------------------------------------
>
>                 Key: GROOVY-11287
>                 URL: https://issues.apache.org/jira/browse/GROOVY-11287
>             Project: Groovy
>          Issue Type: New Feature
>          Components: performance, Static compilation
>    Affects Versions: 5.0.0-alpha-4, 4.0.17
>            Reporter: Oscar N
>            Priority: Major
>
> I have the following Groovy code and its Java equivalent:
> {code:groovy}
> @CompileStatic
> final class Main {
>     private static final int ONE = 1
>     static void main(String[] args) {
>         int two = ONE + 1
>         println two
>     }
> }
> {code}
> {code:java}
> public final class JavaMain {
>     private static final int ONE = 1;
>     public static void main(String[] args) {
>         int two = ONE + 1;
>         System.out.println(two);
>     }
> }
> {code}
> In Groovy, it currently compiles to:
> {code}int two = ONE + 1{code}
> In Java, the calculation is done at compile-time and inlined:
> {code}int two = 2{code}
> It would be great if Groovy also did this.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to