[
https://issues.apache.org/jira/browse/GROOVY-11842?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jochen Theodorou updated GROOVY-11842:
--------------------------------------
Description:
As can be seen in the IndyInterfaceUsageTest there is a stack trace element
showing IndyInterface. This is bad for inlining and general performance.
!improved_indy.svg!
of course a programm like
{code:Java}
int foo(){1}
int a
for (int i=0; i<MAX; i++) {
a = foo()
}
{code}
is not much of a test for anything. It was supposed to show better inlining,
but unlike Groovy 3 all later Groovy version fail to unroll the loop and
eliminate the assignment to a for later executions. The graph though shows that
the branch performance is better than Groov 3 or 4. Not only in the long run,
but also on start. But be aware the graph above is from the 5th iteration of 1k
calls to be able to see things more in scale. The first 4 iterations of 1k
calls look like this:
!screenshot-1.png!
was:
As can be seen in the IndyInterfaceUsageTest there is a stack trace element
showing IndyInterface. This is bad for inlining and general performance.
!improved_indy.svg!
of course a programm like
{code:Java}
int foo(){1}
int a
for (int i=0; i<MAX; i++) {
a = foo()
}
{code}
is not much of a test for anything. It was supposed to show better inlining,
but unlike Groovy 3 all later Groovy version fail to unroll the loop and
eliminate the assignment to a for later executions. The graph though shows that
the branch performance is better than Groov 3 or 4. Not only in the long run,
but also on start.
> Invokedynamic first invocation should not have a line with IndyInterface
> ------------------------------------------------------------------------
>
> Key: GROOVY-11842
> URL: https://issues.apache.org/jira/browse/GROOVY-11842
> Project: Groovy
> Issue Type: Improvement
> Reporter: Jochen Theodorou
> Priority: Major
> Attachments: improved_indy.svg, screenshot-1.png
>
>
> As can be seen in the IndyInterfaceUsageTest there is a stack trace element
> showing IndyInterface. This is bad for inlining and general performance.
> !improved_indy.svg!
> of course a programm like
> {code:Java}
> int foo(){1}
> int a
> for (int i=0; i<MAX; i++) {
> a = foo()
> }
> {code}
> is not much of a test for anything. It was supposed to show better inlining,
> but unlike Groovy 3 all later Groovy version fail to unroll the loop and
> eliminate the assignment to a for later executions. The graph though shows
> that the branch performance is better than Groov 3 or 4. Not only in the long
> run, but also on start. But be aware the graph above is from the 5th
> iteration of 1k calls to be able to see things more in scale. The first 4
> iterations of 1k calls look like this:
> !screenshot-1.png!
--
This message was sent by Atlassian Jira
(v8.20.10#820010)