Source: Real-Time Innovations ( Gerardo Pardo-Castellote)
The presence of a bit indicating the endianess in the DHEADER causes serious inefficiencies in the serialization.
- When mutable encapsulation is used, the length of the member can be shared between the MemberHeader and the MemberSerialization in the case where the MemberSerialization starts with a length. This would be the case for strings and octet sequences. If the DHEADER did not have the EndianessBit then this optimization would also apply to the @appendable members which is a very common use-case.
- The processing of the Endianess bit (pack/unpack) and check takes CPU time. This would be avoided if the Endianess bit is not present.
The reason why the Endianess Bit was put was to support embedding serialized data inside other serialized data even if the pieces came from different endianess. This is not a common use-case. Supporting this edge case is not worth hurting the performance of the common case.
The proposal is to remove the Endianess Bit from the DHEADER.
Reported: DDS-XTypes 1.2 — Thu, 6 Sep 2018 02:10 GMT
Disposition: Resolved — DDS-XTypes 1.3
Remove E_FLAG from DHEADER
Redefine the DHEADER used for Appendable and Mutable types to only contain the length of the serialized object that follows (O.ssize).
This affects the following parts of the specification:
- Table 39 ('Functions operating on objects and types'. The entry for DHEADER shall be changed to just say DHEADER(O) = O.ssize
- Section 18.104.22.168.1 'Delimiter Header (DHEADER)' remove mentions of the
- Section 22.214.171.124.3 'Complete Serialization Rules'. Replace "DHEADER(O, <E>)" with "DHEADER(O)" this affects rules (9), (12), (15), (21), (27), (30).
Updated: Tue, 8 Oct 2019 17:55 GMT