[ 
https://issues.apache.org/jira/browse/FLINK-2653?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14802742#comment-14802742
 ] 

ASF GitHub Bot commented on FLINK-2653:
---------------------------------------

Github user StephanEwen commented on the pull request:

    https://github.com/apache/flink/pull/1115#issuecomment-141041498
  
    You are right, in those drivers, it is handled in the wrong way. Probably 
an artifact from the time before the `MultableObjectIterator` had both variants 
of the `next()` method. It used to have only the reusing variant.
    
    Clearly, this should be fixed.
    
    Here is the guide that I try to follow when working with the mutable 
objects:
    
      - All `MultableObjectIterator`s have two variants of the `next()` method 
- one for reuse, one without.
      - The variant without reuse it crucial, as not every situation can work 
with object reuse.
      - The variant with reuse is optional, but should be implemented where 
possible for performance.
      - The task drivers (AllReduceDriver, ...) or algorithms (sorter / hasher) 
know whether they want to work with reuse or not, and call the respective 
method in that case.


> Enable object reuse in MergeIterator
> ------------------------------------
>
>                 Key: FLINK-2653
>                 URL: https://issues.apache.org/jira/browse/FLINK-2653
>             Project: Flink
>          Issue Type: Improvement
>          Components: Distributed Runtime
>    Affects Versions: master
>            Reporter: Greg Hogan
>
> MergeIterator currently discards given reusable objects and simply returns a 
> new object from the JVM heap. This inefficiency has a noticeable impact on 
> garbage collection and runtime overhead (~5% overall performance by my 
> measure).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to