[
https://issues.apache.org/jira/browse/TEZ-3709?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16000597#comment-16000597
]
Rajesh Balamohan commented on TEZ-3709:
---------------------------------------
Patch .3 considerably reduces the time as it ends up using long[] instead of
list (& manual copy). lgtm.
I was wondering whether {{segmentSizes}} can be modified to {{LinkedList}}
instead of {{ArrayList}}. For 1 million segment entries, it brought down
runtime from 91 seconds to 19 seconds on my laptop for
{{computeBytesInMerges}}. I agree that it would be slower than .3; But given
that it is going to millions of segments, connect/fetch times would take a lot
higher time compared to this?.
> TezMerger is slow for high number of segments
> ---------------------------------------------
>
> Key: TEZ-3709
> URL: https://issues.apache.org/jira/browse/TEZ-3709
> Project: Apache Tez
> Issue Type: Bug
> Reporter: Jonathan Eagles
> Assignee: Jonathan Eagles
> Labels: performance
> Attachments: TEZ-3709.1.patch, TEZ-3709.2.patch, TEZ-3709.3.patch
>
>
> The below code is a bad performer at scale since it has to memcpy the whole
> list of segments for each item in the batch instead of of just once per batch.
> This is true for both computeBytesInMerges and getSegmentDescriptors.
> {code}
> for (int i = 0; i < batch; i++) {
> ArrayList#remove(0)
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)