Skip to content

perf(mapper): 性能优化升级 - 版本 0.8 发布Develop#54

Merged
devfeel merged 13 commits intomasterfrom
develop
Mar 12, 2026
Merged

perf(mapper): 性能优化升级 - 版本 0.8 发布Develop#54
devfeel merged 13 commits intomasterfrom
develop

Conversation

@devfeel
Copy link
Owner

@devfeel devfeel commented Mar 12, 2026

🚀 Version 0.8

⚡ Performance Optimization

  • MapDirect 系列函数 - 新增函数式泛型 API,带字段映射缓存
方法 旧版本 新版本 提升
单次映射 3,897 ns/op 556 ns/op 7x
批量映射 (100条) 452,718 ns/op 59,185 ns/op 7.6x
内存占用 400 B/op 272 B/op -32%
内存分配 42 allocs/op 4 allocs/op -90%

✨ New APIs

  • MapDirect[From, To](from From) To - 直接返回映射结果
  • MapDirectPtr[From, To](from *From) *To - 指针版本
  • MapDirectSlice[From, To](from []From) []To - 批量映射
  • MapDirectPtrSlice[From, To](from []*From) []*To - 指针批量
  • SafeMapDirect[From, To](from From) (To, error) - 带错误处理
  • SafeMapDirectSlice[From, To](from []From) ([]To, error) - 批量安全映射

🧪 Improvements

  • 新增 Benchmark 测试用例
  • 新增 example/func 使用示例

🔴 Breaking Changes

  • 移除已废弃的 mapper_generic.go / mapper_generic_test.go
  • 移除已废弃的 example/generic

OpenClaw and others added 13 commits March 10, 2026 08:29
- Add field mapping cache using sync.Map
- Reduce reflection calls for better performance
- Add comprehensive benchmark tests
- Performance improvement: ~7x faster for single mapping, ~7.6x for slice
- Add example/func with MapDirect usage examples
- Cover all APIs: MapDirect, MapDirectPtr, MapDirectSlice, etc.
- Include performance demo for cache effect

🐾 Generated by 小源
- Remove mapper_generic.go
- Remove mapper_generic_test.go

These are replaced by mapper_func.go with better performance

🐾 Generated by 小源
Replaced by example/func with better API design

🐾 Generated by 小源
perf: optimize MapDirect with field mapping cache
🐾 Generated by 小源
Version 0.8: Performance Optimization
@devfeel devfeel merged commit 51bc51d into master Mar 12, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant