On 2013-06-18 00:06, Francois Chabot wrote:
Well, the main thing that I want on my end is a O(1) memory footprint when dealing with hierarchical data with no cross-references.
That's kind of hard since it creates data. But if you mean except for the data then it stores some meta data in order to support reference types. That is, not serializing the same reference more than once. Theoretically a template parameter could be added to avoid this, but that defeats the purpose of a class/interface design. It could be a runtime parameter, don't know how well the compiler can optimize that out.
Even better would be that serialization being a lazy input range that can be easily piped into something like Walter's std.compress. I guess I could log an enhancement request to that effect, but I kinda felt that this was beyond the scope of Orange. It has a clear serialize, then deal with the data design. What I need really goes against the grain here.
I'm no expert on ranges but I'm pretty sure it can work with std.compress. It returns an array, which is a random access range. Although it won't be lazy.
The deserialization would be a bit harder since it depends on std.xml which is not range based.
Once again, the sticking point is not the serialization format, but the delivery method of said data.
Ok.
No! no no no. I just feel that Orange handles a big piece of the serialization puzzle, but that there's a lot more to it.
Ok, I see. But I need to know about the rest, what you're missing to be able to improve it. I have made a couple of comments here.
-- /Jacob Carlborg