Cpp API引用一个CreateSharedString
函数来执行字符串重复数据删除。似乎在平面缓冲区DSL中还有一个特定的shared
属性。
不幸的是,我找不到Java API中的等效项,也找不到关于shared
属性的任何文档。
是否可以使用Java API创建共享字符串?如果是,该怎么办?
我应该为调用FlatBufferBuilder#createString维护一个Strings及其偏移量的映射,并对此映射进行检查吗,还是Flatbuffers在Java中提供了更好的均值?
答案 0 :(得分:2)
是的,如果需要,您可以自己做。如果您在2个或更多位置序列化从createString
获得的偏移量,则您正在使用共享。使用自己的映射查看是否已经序列化了字符串并重新使用其偏移量就可以了。
遗憾的是,这当然会使序列化过程变慢(并使用更多的内存),但是如果您有很多重复的字符串,那么这样做是值得的。