二进制格式(ASUN-BIN)
ASUN-BIN 是 ASUN 文本格式的二进制配套形态,适合不再需要人工可读性的内部服务通信、缓存和存储。
适用场景
| 场景 | 推荐格式 |
|---|---|
| LLM 提示词与响应 | ASUN Text |
| 人类可读文件或日志 | ASUN Text |
| 内部服务边界 | ASUN-BIN |
| 缓存值 | ASUN-BIN |
| 磁盘快照 | ASUN-BIN |
它主要优化什么
- 更紧凑的类型化表示
- 稳定字段顺序
- 同一运行时内更快的编解码
- 更少的文本解析工作
性能说明
二进制模式通常是 ASUN 性能表现最强的一种形态,但结果仍然取决于具体实现。
- Rust 目前拥有最成熟的二进制 benchmark 集。
- 原生实现通常收益最大。
- 跨语言通信仍然更推荐使用 ASUN 文本格式。
实现级说明请看 benchmark notes。
线模型
所有整数采用小端序,字符串采用长度前缀。
| 类型 | 编码 |
|---|---|
bool | 1 字节 |
i8 / u8 | 1 字节 |
i16 / u16 | 2 字节 LE |
i32 / u32 | 4 字节 LE |
i64 / u64 | 8 字节 LE |
f32 | 4 字节 LE |
f64 | 8 字节 LE |
str / String | [u32 长度][UTF-8 字节] |
Option<T> | [tag][payload] |
Vec<T> | [u32 数量][元素...] |
struct | 按 schema 顺序编码字段 |
二进制 payload 不像文本 ASUN 那样天然自描述。实际解码通常仍需要:
- 显式 schema 字符串
- 目标类型
- 或两端一致的字段布局
互操作性
ASUN-BIN 更适合被视为实现内或运行时内的私有线格式。如果不同语言之间需要通信,除非二进制实现已明确对齐,否则优先使用 ASUN 文本。