我们的服务器端服务有一个很大的特点,就像数以千万计的节点一样。整个trie需要大约4演出的RAM。到目前为止,我们只使用基本的二进制.NET序列化将trie存储在一个文件中并在内存中重新构建它。但它太慢了......在我们的情况下有哪些更好的序列化算法,某种直接mmap
- 类似的技巧会很棒,但.NET不允许自定义内存分配器。目的是最大限度地减少保存,特别是从文件加载trie(文件大小不是我们关注的)。
注意:由于延迟,我们绝对不能使用关系数据库。
更新:我们发现了类似的问题Persisting a trie to a file - C。 C社区似乎更适合这类问题;)=>接受protobuf.net解决方案。
答案 0 :(得分:2)
被接受的"最快的序列化器" .net是ProtoBuf.net的最快和最小的序列化器。 http://damienbod.wordpress.com/2014/01/09/comparing-protobuf-json-bson-xml-with-net-for-file-streams/