objectbox-generator
objectbox-generator copied to clipboard
Optimization: special null values
In addition to existing "optional" support for C++, there should also be a variant to represent "null" values in FlatBuffers via special values. Why? The current C++11 solution with unique_ptr
is heap based and thus comes with an extra indirection with potential cache misses (not to mention additional allocs and deallocs). C++17's optional
is much better but still comes with space overhead (one byte plus padding; resulting in 2x space requirements in some cases).
Special values to indicate a null in FlatBuffers could be configurable in the future, but to start with we can only consider the "obvious" ones: empty string, zero for integer types, and NAN for floating points. This requires a new annotation or an addition to the existing one. E.g. /// objectbox:optional="special-value"
Btw, https://cpp.objectbox.io/entity-annotations does not mention optional values at all yet.