-
Improvement
-
Resolution: Unresolved
-
Medium
-
None
-
None
-
None
The current implementation of LeafNode::modifyValue() copies the value before modifying:
template<typename ModifyOp>
void modifyValue(Index offset, const ModifyOp& op)
{
ValueType val = mBuffer[offset];
op(val);
mBuffer.setValue(offset, val);
mValueMask.setOn(offset);
}
For a custom value type, this copy can prove expensive, so an in-place alternative would be more desirable:
template<typename ModifyOp>
void modifyValue(Index offset, const ModifyOp& op)
{
ValueType& val = mBuffer[offset];
op(val);
mValueMask.setOn(offset);
}