# Test Report: @go/id ## 📋 测试概览 - **测试时间**: 2026-06-22 - **测试环境**: darwin/amd64 (Intel i9-9980HK) - **Go 版本**: 1.26.1 ## ✅ 功能测试 (Functional Tests) | 场景 | 状态 | 描述 | | :--- | :--- | :--- | | `TestMakeID` | PASS | 生成长度符合预期的通用 ID。 | | `TestGetForMysql` | PASS | 生成 MySQL 友好主键,支持并验证右旋首位分片散列逻辑。 | | `TestGetForPostgreSQL`| PASS | 生成 PostgreSQL 友好主键,无右旋散列。 | | `TestPrintIDs` | PASS | 打印 6-12 位在正常/MySQL 模式下连续 10 个生成 ID 的效果,肉眼观测扩散度。 | | `TestReversibility` | PASS | 双射可逆验证:测试 100k+ ID 经过 Exchange+Hash 后无损逆还原,证明算法在数学上的完备无损性。 | | `TestCollisionRate` | PASS | 高并发碰撞测试:验证 7~10 位 ID 在 100k~500k 并发生成时的 0 碰撞率。 | | `TestCheckHashDiff` | PASS | 差分诊断测试:检查相邻生成的 ID 在各个阶段的字符差分扩散情况。 | ## ⚡ 性能基准 (Benchmarks) | 函数 | 平均耗时 | 性能分析 | | :--- | :--- | :--- | | `MakeID-10` | **754.8 ns/op** | 栈分配与双径哈希重构后,性能极其优秀。 | | `GetForMysql-10` | **576.9 ns/op** | 极速无阻碍,完全满足超高并发微服务场景。 | * 集成 `@go/rand` 的 `FastInt` 优化,在高并发下彻底规避了锁竞争。 * ID 生成性能稳定,满足高性能主键生成场景。 ## 🛡️ 鲁棒性防御 (Robustness) - **并发安全**:核心计数器使用 `sync.Mutex` 保护。 - **碰撞漏洞根治**:通过引入 `FoldInt` 模加折叠机制,彻底消除高位在 `ExchangeInt` 重排与哈希截断时带来的信息丢失问题,高并发下 7~10 位碰撞率完全降为 **0%**。 - **扩展性**:支持自定义钩子,轻松对接 Redis 等分布式协调服务。