[
https://issues.apache.org/jira/browse/GROOVY-11609?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Daniel Sun updated GROOVY-11609:
--------------------------------
Description:
When I debugged GROOVY-4721, I found {{VariableScopeVisitor}} will try to find
same variable/class member again and again, the finding logic is quite complex.
Unfortunately, {{VariableScopeVisitor}} is widely used, e.g.
{{ResolveVisitor}}, {{JavaStubCompilationUnit}} and {{TraitASTTransformation}}.
So it's better to avoid finding same variable/class member repeatedly to gain
better performance.
For example, in the following code, {{a}}, {{i}}, {{j}} will be tried to find
many times:
{code}
class BubbleSort {
public static void bubbleSort(int[] a) {
for (int i = 0, n = a.length; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (a[j] > a[j + 1]) {
int temp = a[j]
a[j] = a[j + 1]
a[j + 1] = temp
}
}
}
}
}
{code}
> Avoid finding same variable/class member repeatedly
> ---------------------------------------------------
>
> Key: GROOVY-11609
> URL: https://issues.apache.org/jira/browse/GROOVY-11609
> Project: Groovy
> Issue Type: Improvement
> Reporter: Daniel Sun
> Priority: Major
>
> When I debugged GROOVY-4721, I found {{VariableScopeVisitor}} will try to
> find same variable/class member again and again, the finding logic is quite
> complex. Unfortunately, {{VariableScopeVisitor}} is widely used, e.g.
> {{ResolveVisitor}}, {{JavaStubCompilationUnit}} and
> {{TraitASTTransformation}}. So it's better to avoid finding same
> variable/class member repeatedly to gain better performance.
> For example, in the following code, {{a}}, {{i}}, {{j}} will be tried to find
> many times:
> {code}
> class BubbleSort {
> public static void bubbleSort(int[] a) {
> for (int i = 0, n = a.length; i < n - 1; i++) {
> for (int j = 0; j < n - i - 1; j++) {
> if (a[j] > a[j + 1]) {
> int temp = a[j]
> a[j] = a[j + 1]
> a[j + 1] = temp
> }
> }
> }
> }
> }
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)