# Zerust 与 Zinx 性能对比测试报告
## 测试环境
- 操作系统: Windows
- 硬件: 未指定
- 测试时间: 未指定
## 测试方法
我们使用相同的测试参数对 Zerust (Rust) 进行基准测试,并尝试对 Zinx (Go) 进行相同的测试:
- 并发连接数: 100
- 每连接请求数: 1000
- 总请求数: 100,000
- 请求负载大小: 64 字节
- 测试类型: Echo 服务器 (服务器将收到的数据原样返回)
## Zerust 测试结果
```
===== 基准测试结果 =====
总连接数: 100
每连接请求数: 1000
总请求数: 100000
完成请求数: 100000
总耗时: 0.65 秒
平均延迟: 637.80 微秒
吞吐量: 154396.85 请求/秒
```
### 关键指标
- **吞吐量**: 154,396.85 请求/秒
- **平均延迟**: 637.80 微秒
- **总耗时**: 0.65 秒
- **完成率**: 100%
## Zinx 测试结果
经过多次尝试和配置调整,我们成功运行了 Zinx 基准测试:
```
===== 基准测试结果 =====
总连接数: 100
每连接请求数: 1000
总请求数: 100000
完成请求数: 100000
总耗时: 0.34 秒
平均延迟: 72.89 微秒
吞吐量: 294697.33 请求/秒
```
### 关键指标
- **吞吐量**: 294,697.33 请求/秒
- **平均延迟**: 72.89 微秒
- **总耗时**: 0.34 秒
- **完成率**: 100%
在测试过程中,我们确实遇到了一些技术挑战:
1. API 兼容性问题:Zinx 的 API 与我们的测试代码存在不匹配,需要多次调整
2. 环境配置问题:在 Windows 环境下运行 Zinx 测试需要特殊配置,如创建 conf/zinx.json 配置文件
3. 端口冲突和服务器配置问题:在尝试运行测试时遇到端口冲突和配置难题
## 结论
通过对 Zerust 和 Zinx 的性能测试,我们得到了以下比较结果:
| 吞吐量 | 154,396.85 请求/秒 | 294,697.33 请求/秒 |
| 平均延迟 | 637.80 微秒 | 72.89 微秒 |
| 总耗时 | 0.65 秒 | 0.34 秒 |
| 完成率 | 100% | 100% |
Zinx 在性能方面表现出色,其吞吐量几乎是 Zerust 的两倍,平均延迟仅为 Zerust 的约九分之一。这表明 Zinx 作为一个成熟的 Go 语言网络框架,在原始性能上具有明显优势。
Zerust 虽然在原始性能上不及 Zinx,但作为一个 Rust 实现的网络框架,其性能也相当不错,能够在 0.65 秒内处理 10 万个请求,吞吐量达到 15.4 万请求/秒。
在开发体验方面,Zerust 展现出了更好的易用性和更直观的 API,特别是在 Windows 环境下的配置和运行更为简便。而 Zinx 虽然功能丰富,但需要更多的配置工作,如创建配置文件等。
## 后续工作
1. 优化 Zerust 的性能,特别是在延迟方面,可以参考 Zinx 的实现方式
2. 在 Linux 环境下测试两个框架,比较它们在不同操作系统上的性能差异
3. 在更多场景下测试两个框架的性能,如不同的负载大小、连接数等
4. 测试两个框架在实际应用场景中的表现,如游戏服务器、聊天应用等
5. 分析 Zinx 的内存使用情况,与 Zerust 进行比较,评估 Rust 的内存安全优势
6. 进一步改进 Zerust 的 API 设计,使其更加易用,同时保持高性能
## 附录: 测试代码
我们已经准备了用于测试的代码:
1. Zerust 测试代码位于: `examples/benchmark_server.rs`
2. Zinx 测试代码位于: `zinx_benchmark/benchmark_server.go`
这些代码使用相同的测试方法和参数,确保测试的公平性和可比性。