# 测试报告 (Test Report) ## 覆盖场景 (Coverage Scenarios) - **语义化转换**: `To[T]` 和 `As` 覆盖基础类型、Slice、Map 及智能 JSON 自动穿透转换。 - **核心类型转换**: `Int64`, `Uint64`, `Float64`, `Bool`, `String`, `time.Time`,包括边界值、零值及非法字符串输入。 - **时间类型原生支持**: 支持 `time.Time` 类型及自定义格式(通过 Struct Tag `format=` 指定)。 - **容器处理**: `ToMap`, `ToSlice`, `FillMap`, `FillSlice` 等泛型工具,支持 Struct 拍平与 KV 序列化。 - **高性能 JSON 引擎**: - **元数据缓存**: 引入 `encoderStructDescriptor` 缓存,大幅减少反射开销。 - **MapRange 遍历**: 优化 Map 序列化路径。 - **批量转义**: `writeString` 优化,大幅提升长文本处理速度。 - **脱敏支持**: `ToJSONDesensitizeBytes` 原生支持字段脱敏,并优化了脱敏路径的计算性能。 - **JSON 构建与解析**: - **零分配摩擦匹配**: `normalizeEqual` 算法实现 0 内存分配的归一化 Key 匹配,支持 UTF-8。 - **智能 Slice 扩容**: 尊重预设 Capacity,减少反序列化时的内存重分配。 - **FastDecoder**: 实现单路径流式解析,支持嵌套指针、Slice 和 Map 的智能初始化。 - **指针与接口**: `RealValue` 处理多级指针与接口解包。 - **实用工具**: `UniqueAppend` ($O(n)$ 去重),`If` (泛型三元),`SplitArgs` (支持引用格式)。 ## 性能基准 (Benchmark Results - Intel(R) Core(TM) i9) - `If`: ~0.24 ns/op (0 allocs/op) - `Int64`: ~20 ns/op (0 allocs/op) - `ToJSON (SimpleStruct)`: **~297 ns/op** (96 B/op) - 相比 v1.2.0 提升约 50% - `ToJSON (Map - No Sort)`: **~649 ns/op** (152 B/op) - 移除排序后性能大幅提升 - `ToJSON (String Escaping)`: **~172 ns/op** (64 B/op) - 批量转义优化成果 - `ToJSON (Time Support)`: **~524 ns/op** (232 B/op) - 原生 time.Time 处理 - `ParseTime (RFC3339)`: **~238 ns/op** (144 B/op) - 高性能解析 - `ParseTime (Numeric)`: **~161 ns/op** (0 B/op) - 紧凑格式零分配 - `UnmarshalJSON (Frictionless)`: **~421 ns/op** (72 B/op) - 0 分配 Key 匹配 - `ToMap`: ~816 ns/op (含 Struct 拍平与类型转换) - `ToSlice`: ~1819 ns/op - `UniqueAppend`: 大数据量下的 $O(n)$ 时间复杂度。 ### 性能概览 | 场景 | 耗时 | 内存分配 | 说明 | | :--- | :--- | :--- | :--- | | **对象深度映射** | ~620 ns/op | 80 B/op | 引入 `performRecursiveTo` 引擎,就地赋值,无内存逃逸 | | **Struct 序列化** | ~290 ns/op | 96 B/op | 引入元数据缓存,反射开销极低 | | **Map 序列化** | ~650 ns/op | 152 B/op | 采用 MapRange + 无序化,性能翻倍 | | **Frictionless 匹配** | ~420 ns/op | 72 B/op | 零分配 Key 比对,GC 压力极小 | | **字符串转义** | ~170 ns/op | 64 B/op | 批量处理,长文本优势明显 |