似乎如果可以将数据序列化为属性和字段组成的原始内存块,那么将这些对象传递给另一个系统应该快得多,而另一个系统只需要为这个内存分配内存并正确设置它们应该去的引用指针。
是的,我知道这有点过于简单,并且可能有很多原因导致难以做到(如循环引用)。但我想知道是否有人尝试过,如果有办法可以使用符合某些限制的对象吗?
一方面,这可能只是我试图进行微优化,但另一方面,在性能至关重要的某些情况下,这似乎非常有用。
答案 0 :(得分:1)
显然,这种序列化将比任何一天的JSON更快(根据定义,XML速度很慢。事实上,我认为这就是L所代表的。它应该是XMS,但因为它太慢而错过了S结束了L)。但是,我怀疑它会在实际场景中击败有效的二进制序列化,例如Google的Protocol Buffers。
如果您的序列化实体没有引用其他实体,和您的内存布局完全相同(相同的对齐方式,相同的顺序等等),您将获得通过复制内存缓冲区一次而不是以块的形式执行一点性能。但是,第二个你必须重建引用,与查找引用的对象相比,内存复制将是微不足道的。复制内存 fast ,特别是按顺序完成时,最大限度地减少缓存未命中。
答案 1 :(得分:0)
正常内存地址之类的东西将在序列化 - 反序列化之间完全中断。但是,如果您聪明且小心,则可以设置数据结构序列化的机制。也许将地址转换为offset-bytes-from-base?