msgpack-swift

一个高效、功能齐全且符合标准的 Swift MessagePack 实现。

Swift 5.9 Linux, visionOS 1, macOS 13, iOS 16, tvOS 16, watchOS 9 MIT License Automated Tests Workflow Status

基本用法

import MessagePack

struct MyMessage: Codable {
   // ...
}
let myMessage = MyMessage(
   // ...
)

// Serialization
let encoder = MessagePackEncoder()
let serializedMessage = try encoder.encode(myMessage)

// Deserialization
let decoder = MessagePackDecoder()
let deserializedMessage = try decoder.decode(MyMessage.self, from: serializedMessage)

查看文档,了解更高级的用例示例。

特性

与竞争对手相比

(截至 2023 年 9 月。)

功能

其他库 备注
nnabeyang/swift-msgpack ⚠️没有针对 DateURLDecimal 的定制支持。
hirotakan/MessagePacker ⚠️ 不支持复杂的嵌套容器设置。
⚠️ 缺少一些验证逻辑。
⚠️没有针对 Decimal 的定制支持。
Flight-School/MessagePack ⚠️不支持复杂的嵌套容器设置。
⚠️没有时间戳类型来保持精度。
⚠️没有针对 URLDecimal 的定制支持。
⚠️不支持应用程序特定的 MessagePack 扩展类型。
swiftstack/messagepack ❌ 时间戳类型不是 Codable
malcommac/SwiftMsgPack ❌ 不支持 Codable
a2/MessagePack.swift ❌ 不支持 Codable
michael-yuji/YSMessagePack ❌ 不支持 Codable
briandw/SwiftPack ❌ 没有 Swift 包清单。

性能

速度对比 其他库
速度提高 3 倍 nnabeyang/swift-msgpack
速度提高 2 倍 hirotakan/MessagePacker
速度提高 6 倍 Flight-School/MessagePack

使用涉及高吞吐量或低延迟用例的真实消息进行测试。 欢迎提交拉取请求到 Benchmarks.swift,如果您知道类似的用例!