Wrote a Protobuf-like D (de)serialisation library - asking for comments / suggestions
Ali Çehreli
acehreli at yahoo.com
Sun Jun 13 00:18:56 UTC 2021
On 6/12/21 2:59 PM, Sinisa Susnjar wrote:
> instead uses the meta programming facilities of D to (de)serialise D
data types from/to binary messages.
Yeah! :)
I did the same at work.
> (I am sure there is a lot of room for improvement)
Without reading your code carefully, I can think of two optimizations
that may prove to be useful:
- If a struct contains all bitwise copyable members, instead of
(de)serializing each member individually, the whole struct can by
memcpy'ed. This may be a performance gain especially for arrays of
structs: You can memcpy the whole array at once.
- Instead of allocating memory for each value (e.g. for arrays with
'new'), you can maintain a function-static buffer and reuse it,
allocating only as the current buffer is not large enough for new data.
(No worries with multi-threading because each thread will have its own
function-static buffer.)
Ali
More information about the Digitalmars-d-learn
mailing list