目前使用Java的本机序列化有点令人不悦,但是有一个序列化库的功能与Java的本机序列化相同吗?我的意思是:
(按优先级列出)
我知道在StackOverflow上已经多次询问过这个问题的变体,但是我找不到确定的答案,所以我希望这次得到一些很好的答案。
答案 0 :(得分:5)
您可以查看Google Proto Buffer或Kryo。 GPB稳定且速度非常快,它也可以在C ++中使用。 我之前没有使用Kryo,但有一些基准看起来不错。
答案 1 :(得分:2)
https://github.com/RuedigerMoeller/fast-serialization
非常接近您所寻找的。它支持所有JDK-Serialization特殊方法,因此您可以在不进行大量代码更改的情况下进行尝试。
答案 2 :(得分:0)
如果您担心效果和效率,可以考虑Babel。使用Babel和一个额外的sidl文件(看起来像Java接口),您可以透明地从Java调用C,C ++,Fortran,Python等定义的函数,反之亦然。 Babel将在幕后处理序列化。
答案 3 :(得分:0)
该项目比较了一系列序列化技术的性能。注意:它列出了Externalizable(使用Java Serialization)作为最快的
http://code.google.com/p/thrift-protobuf-compare/wiki/Benchmarking
我使用更快的技术进行了性能比较,但是比Externalizable更难做到,除非你需要超低延迟,否则我不会推荐它。
http://vanillajava.blogspot.com/2011/10/serialization-using-bytebuffer-and.html
真正的问题是;为了加快速度,值多少钱?如果你正在寻找一个快速的胜利,我怀疑你会失望。如果你愿意付出一些努力,你可以做出重大改进。
我想首先使用Externalizable,因为你可以转换几个关键类(现在大部分时间都需要),并保留大部分类不变。即它可以让你充分利用这两个世界。