[
https://issues.apache.org/jira/browse/PIG-2001?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Alan Gates updated PIG-2001:
----------------------------
Status: Patch Available (was: Open)
> 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