> On Jan. 14, 2016, 9:03 a.m., Benjamin Bannier wrote:
> > Was the decision to optimize here driven by profiling?
> > 
> > Given the proposed implementation I wonder if this was worth the risk. I 
> > can only see this being called for single element `queues` of `Events` 
> > which should not be too expensive to copy, especially given how little we 
> > worry about e.g., creating temporary `strings` elsewhere.

My main motivation for making the change was driven by the semantics of how the 
callback function processes the data here:

```
void received(queue<Event> events)
  {
    while (!events.empty()) {
      Event event = events.front();
      events.pop();

      switch (event.type()) {
      }
  }
```

Since, the callback function always has to invoke a `.pop()`. The argument 
`queue<Event> events` has to be passed on by value. So, we were effectively, 
copying the same object twice. 

Also, after performing the `move`, we were invoking the assignment operation 
that did not have a precondition associated with it for `std::queue` and hence 
seemed safe to make the change. But, the queue can at best have a few events 
(at max). In most cases being `== 1` as you pointed out, except for the cases 
where the callback function takes some time and we queued more events from the 
master in the interim. 

I am discarding this for now. We can always revisit this later.


- Anand


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/42273/#review114441
-----------------------------------------------------------


On Jan. 13, 2016, 11:06 p.m., Anand Mazumdar wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/42273/
> -----------------------------------------------------------
> 
> (Updated Jan. 13, 2016, 11:06 p.m.)
> 
> 
> Review request for mesos and Vinod Kone.
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> This trivial fix invokes `std::move` on the `queue` object to not perform a 
> copy before invoking the `async(..)` call.
> 
> 
> Diffs
> -----
> 
>   src/scheduler/scheduler.cpp a17872b46ec600e0fae6c43247ccb63f5ee55ac0 
> 
> Diff: https://reviews.apache.org/r/42273/diff/
> 
> 
> Testing
> -------
> 
> make check
> 
> 
> Thanks,
> 
> Anand Mazumdar
> 
>

Reply via email to