基准测试#
您应始终执行自己的基准测试,因为您的用例可能与其他人的用例不完全相同。不过,这里有一些通用基准测试来帮助您入门。
Go 性能#
Go 速度很快。与 Node.js 和 Python 相比,Go 通常更快,同时使用更少的内存并更好地处理并发。Techempower 基准测试 是进行通用比较的良好起点:

请注意,所有顶级框架都是用 Go 编写的。Huma 的性能和特性将根据使用的特定路由器或框架而异,但它通常与其它顶级 Go 框架相当。
突出显示几个就很说明问题,而且这忽略了内存使用方面的改进,这很可能意味着更便宜的硬件和容器成本:
| Framework | Language | JSON Req/s | Percentage | Fortunes Req/s | Percentage |
|---|---|---|---|---|---|
| Chi | Go | 520K | 100% | 150K | 100% |
| Node.js | Javascript | 377K | 73% | 80K | 53% |
| FastAPI | Python | 168K | 32% | 50K | 33% |
| Django | Python | 73K | 14% | 15K | 10% |
要点#
以下是上述内容、其它基准测试以及我们使用 Go 的经验的一些要点:
- Go(从而 Huma)速度快**且**内存占用低。
- Go 简单,团队可以**快速上手**。
- 其复杂性**相当**或低于 Javascript 或 Python
- Huma 是优于 Node.js、FastAPI 或 Django 的**良好选择**。
微基准测试#
自 Huma v1 以来,已经实现了显著的性能改进,如以下基本基准测试操作所示,该操作带有几个输入参数、一个小输入体、一些输出头和一个输出体(参见 adapters/humachi/humachi_test.go)。
# Huma v1
BenchmarkHumaV1Chi-10 16285 112086 ns/op 852209 B/op 258 allocs/op
# Huma v2
BenchmarkHumaV2Chi-10 431028 2777 ns/op 1718 B/op 29 allocs/op
# Chi without Huma (raw)
BenchmarkRawChi-10 552764 2143 ns/op 2370 B/op 29 allocs/op
这些改进归因于多种因素,包括对 Huma API 的更改、在可能的情况下预计算反射数据、低分配或零分配验证和 URL 解析、使用共享缓冲池来限制垃圾收集器压力,以及更多其他因素。
由于您自带路由器,您可以自由地“绕过” Huma 直接使用路由器,但如上所示,在 v2 中很少需要这样做。