我希望能够以高效的方式将Clojure对象序列化为二进制格式——即不仅仅是经典的打印和读取文本序列化。
也就是说,我想要做类似以下操作的事情:
动机是我有一些大型数据结构,其中包含大量的二进制数据(在Java数组中),我想避免将所有这些数据转换为文本再进行转换的开销。此外,我试图保持格式紧凑,以最小化网络带宽使用。
我想要具有以下具体特点:
- 轻量级、纯Java实现 - 支持Clojure的所有标准数据结构以及所有Java基元、数组等。 - 不需要额外的构建步骤/配置文件 - 我更希望它“开箱即用”。 - 无论是处理所需的处理时间还是二进制编码表示的紧凑性,都具有良好的性能。
在Clojure中实现这个功能的最佳/标准方法是什么?
也就是说,我想要做类似以下操作的事情:
(def orig-data {:name "Data Object"
:data (get-big-java-array)
:other (get-clojure-data-stuff)})
(def binary (serialize orig-data))
;; here "binary" is a raw binary form, e.g. a Java byte array
;; so it can be persisted in key/value store or sent over network etc.
;; now check it works!
(def new-data (deserialize binary))
(= new-data orig-data)
=> true
动机是我有一些大型数据结构,其中包含大量的二进制数据(在Java数组中),我想避免将所有这些数据转换为文本再进行转换的开销。此外,我试图保持格式紧凑,以最小化网络带宽使用。
我想要具有以下具体特点:
- 轻量级、纯Java实现 - 支持Clojure的所有标准数据结构以及所有Java基元、数组等。 - 不需要额外的构建步骤/配置文件 - 我更希望它“开箱即用”。 - 无论是处理所需的处理时间还是二进制编码表示的紧凑性,都具有良好的性能。
在Clojure中实现这个功能的最佳/标准方法是什么?