在 Java 或 Python 中读取 OCaml 的 Marshall 文件
Reading OCaml's Marshall Files in Java or Python
有没有办法用其他编程语言读取 OCaml 的默认序列化输出 (.marshall),例如 Java?
我知道 thrift/protobuf,它们都支持 OCaml 类型的序列化。有几个选项可以帮助将类型序列化为 JSON——Anton Lavrik 的优秀 Piqi-lib and Martin Jambon's super Yojson。生成的 JSON 太大(想想 GiB),而且似乎效率低下,我们真的不希望 serialization/de-serialization 成为严重的瓶颈 + space 效率低下。更不用说 RAM 的使用了!
还有什么我没有探索过的东西可以让我按原样在 Java 或 Python 中读取 OCaml 的默认编组输出吗?
首先你可以使用piqi
lib序列化到protobuf。这将在 space 和时间上更有效率。另外,看看 cap'n'proto。这三个都可用,而且速度非常快(比 protobuf 快)。其他选择是使用 Janestreet bin_prot
,但这将要求您在 Python 和 Java 中编写解析器,因为它目前仅适用于 OCaml。
当然,用 OCaml 以外的语言读取编组数据是不可能的,因为它至少没有文档记录。
有没有办法用其他编程语言读取 OCaml 的默认序列化输出 (.marshall),例如 Java?
我知道 thrift/protobuf,它们都支持 OCaml 类型的序列化。有几个选项可以帮助将类型序列化为 JSON——Anton Lavrik 的优秀 Piqi-lib and Martin Jambon's super Yojson。生成的 JSON 太大(想想 GiB),而且似乎效率低下,我们真的不希望 serialization/de-serialization 成为严重的瓶颈 + space 效率低下。更不用说 RAM 的使用了!
还有什么我没有探索过的东西可以让我按原样在 Java 或 Python 中读取 OCaml 的默认编组输出吗?
首先你可以使用piqi
lib序列化到protobuf。这将在 space 和时间上更有效率。另外,看看 cap'n'proto。这三个都可用,而且速度非常快(比 protobuf 快)。其他选择是使用 Janestreet bin_prot
,但这将要求您在 Python 和 Java 中编写解析器,因为它目前仅适用于 OCaml。
当然,用 OCaml 以外的语言读取编组数据是不可能的,因为它至少没有文档记录。