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