From Martins talk on InfoQ here is the slide showing the priority of design principles from Aeron
Design principles:
1. Garbage free in stead state running
2. Smart batching in the message path
3. Wait-free algos in the message path
4. Non-blocking IO in the message path
5. No exceptional cases in the message path
6. Apply the single writer principle
7. Prefer unshared state
8. Avoid unnecessary data copies
Given the above where does one balance between conditionals and extra data?
In my messages I have a field that I add on some messages but not others. The conditional
causes a branch failure at times so my thought is I should always add the field. In this way
I am assuming that the extra data copy is a better choice than a conditional that may stall.
Is this assumption right and is the "minimize of conditionals" something that belongs on the
above list? And if it belongs on the list is it above or below #8. Or is this in fact #5?