rkyv implements total zero-copy deserialization, which guarantees that no data is copied during deserialization and no work is done to deserialize data. It achieves this by structuring its encoded representation so that it is the same as the in-memory representation of the source type. see https://github.com/rkyv/rkyv and https://rkyv.org/
Serialize 121241 candles took: 69.326083ms
using csv format.
Deserialize 121241 candles took: 74.376041ms
using csv format.
File size: 7362642 bytes.
Serialize 121241 candles took: 6.317917ms
using rkyv format.
Deserialize 121241 candles took: 3.690916ms
using rkyv format.
Load as bytes 121241 candles took: 530.667µs
using rkyv format.
File size: 8729360 bytes.
For an example of saving and loading types as .rkyv files and creating bytes from types see candles.rs and candle_tests.rs
Data streamed from the historical_server and api_implementations will be in the form of Vec<u8>
bytes that will be deserialized into the required type on the client side.