pig-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Thejas M Nair (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (PIG-2001) DefaultTuple(List) constructor is inefficient, causes List.size() System.arraycopy() calls (though they are 0 byte copies), DefaultTuple(int) constructor is a bit misleading wrt time complexity
Date Thu, 14 Jul 2011 15:15:38 GMT

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

Thejas M Nair updated PIG-2001:
-------------------------------

    Resolution: Fixed
        Status: Resolved  (was: Patch Available)

+1 . Patch committed to trunk.
Thanks Woody!

> DefaultTuple(List) constructor is inefficient, causes List.size() System.arraycopy()
calls (though they are 0 byte copies), DefaultTuple(int) constructor is a bit misleading wrt
time complexity
> -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: PIG-2001
>                 URL: https://issues.apache.org/jira/browse/PIG-2001
>             Project: Pig
>          Issue Type: Improvement
>          Components: impl
>    Affects Versions: 0.8.0, 0.9.0
>            Reporter: Woody Anderson
>            Assignee: Woody Anderson
>            Priority: Minor
>             Fix For: 0.10
>
>         Attachments: 2001.patch
>
>
> I was perusing the Tuple created by the default Tuple factory, when I wanted it to copy
my input list.
> here i noticed that the List constructor uses List.add(index, element), which is different
from set(index, element) in that it shifts the right side of the list, with ArrayList this
causes an no-op System.arraycopy call which is completely unnecessary.
> Even though the array copy call isn't actually copying any bytes, it's still unnecessary,
and can be easily avoided.
> it's also N iterate/add function calls, that can be avoided by using:
> {code}
> new ArrayList<Object>(c);
> {code}
> which, is more efficient. For arbitrary collection inputs this is at worst N iterator
calls (same as existing code); when constructing from ArrayLists or Arrays.asList, the construction
is accomplished via a single System.arraycopy call, which is an actual improvement.
> There do not seem to be DefaultTuple tests.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message