cast/TEST.md

2.8 KiB
Raw Permalink Blame History

测试报告 (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 批量处理,长文本优势明显