Comments (4)
Serializing to a pre-allocated buffer versus a dynamic buffer like std::string
typically has less than a 5% difference in performance. Furthermore, in inter-process communication you should typically reuse your serialization buffer. Glaze uses a doubling of the buffer capacity if growth is needed, so it is rare that you will have new allocations if you reuse your serialization buffer.
Is there a reason why you can't reuse a std::string
(serialization) buffer?
A function to calculate the serialization size could be added, but it would need to iterate through your structures. This would actually add more overhead than simply reusing the std::string
buffer. So you might have a tiny performance boost for the very first message you send, but subsequent messages would run slower needing to compute the size beforehand.
from glaze.
Before if I use string I need to serialize to std::string then write it to shared memory, there is an extra copy.
And the reason why I need to size is I want to know what the size of the shared memory to be created.
from glaze.
I see. I'll keep this issue alive to add the ability to compute the space required before serialization.
I typically use shared libraries which allow me to share the std::string directly across processes, which allows dynamic buffer sharing and avoids the extra copy. But, I can see how if you are wanting to connect services in other programming languages it is easier to not have to deal with dynamic memory and just compute the size beforehand.
from glaze.
thanks
from glaze.
Related Issues (20)
- How to correctly read into variant where structs have the same member names? HOT 1
- Compilation error because of `glaze/reflection/enum_macro.hpp` HOT 5
- Reading and Writing binary to std::vector fails with `data_must_be_null_terminated` HOT 2
- error_on_unknown_keys does not provide any info about the key in error_ctx HOT 2
- GLZ_FLATTEN adds significant compilation time on MSVC. HOT 3
- error HOT 2
- GLZ_FLATTEN adds significant compilation time on gcc. HOT 12
- host_include -> file_include -> fails parsing with `expected_comma`
- std::array<char> partial read handling HOT 9
- Binary (BEVE) support lacking for object keys HOT 8
- Type selection when reading to a variant HOT 1
- Update to v3.2.2 causes compilation errors HOT 9
- new_lines_in_arrays option should apply to writing JSON and not just prettify_json
- std::pair of structs fails round trip HOT 2
- Any struct with any members named "first" and "second" in any order is treated as a std::pair HOT 4
- can't write enum with the highest value HOT 4
- There seems to be an error. HOT 10
- Possible bug following examples in the README? HOT 1
- _GLIBCXX_DEBUG for libstdc++ cannot currently be used with glaze HOT 1
- Compilation error on 32-bit system HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from glaze.