Joris Van Remoortere created MESOS-1991:
-------------------------------------------

             Summary: Remove dynamic allocation from Option
                 Key: MESOS-1991
                 URL: https://issues.apache.org/jira/browse/MESOS-1991
             Project: Mesos
          Issue Type: Improvement
          Components: stout
            Reporter: Joris Van Remoortere
            Assignee: Joris Van Remoortere
            Priority: Minor


Remove dynamic allocations from Option class.

The motivation for this is 3-fold:
1. Reduce dynamic allocations. These can cause latency jitter as process 
lifetime grows. This kind of jitter can make it hard to grasp the upper bound 
of latency on certain operations under locks. This modification only moves the 
allocated space of T, it does not reduce or increase the number of actual 
construction / move calls unless the new move constructor is used.
2. The commonly understood implication of Optional / Option / Nullable is that 
it augments the type field by 1 bit in order to allow representation of an 
unknown or null state. This is handy in cases where a type such as int64_t 
fully utilizes its 64 bit storage space, and representing unknown would 
otherwise require us to steal a number (such as INT64_MAX). This class should 
not take on the additional responsibility of managing memory for the augmented 
type.
3. It can be very deceptive to a newcomer when Option<int64_t> does a dynamic 
allocation. Intuitively you would not expect a type such as int64_t to do a 
dynamic allocation or be expensive to copy. Naturally Option<BigType> would be 
expected to be expensive to copy, and so a developer would be more inclined to 
do something like std::shared_ptr<Option<BigType>>.



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

Reply via email to