Protobuf Schemas#
RTA models size/performance-sensitive data in Google Protocol Buffers.
Why not X?
Some alternative frameworks are starting to gain traction, including:
These achieve even better performance than Protobuf by using zero-copy data structures instead of techniques like variable-length integer compression. The principle is that the data serialization is larger, but still amenable to fast compression (e.g. with LZ4).
Protobuf was chosen because it has a great mix of features, maturity, usability, RPC support, language support, and adoption — combined with good performance. Microsoft's investment in making gRPC a first-class citizen in Visual Studio and ASP.NET Core has been a major deciding factor.
Memory allocation is still a noticeable factor on a profiler — but typically only when all other sources of allocation and inefficiency have been eliminated.
These schemas are pre-compiled in the MAT.OCS.RTA.Model library, which is available via the McLaren NuGet Packages.
If you need to compile them yourself for your preferred language, create this directory structure:
protos/
Refer to the protobuf documentation for protoc
instructions.