Initial Dever 0.0.1

This commit is contained in:
Codex committed 2026-11-03 03:32:07 +00:00
commit 81233d098c
1479 files changed
+163782

No files matched your search

+56
View File
@@ -0,0 +1,56 @@
# 性能测试
主入口是 `test/rust/performance.rs`,比较真实 Dever 生成程序和 Rust 实现。Go 与 Web 框架对照使用本目录的 Python 驱动。先测改动涉及的功能,完整矩阵用于阶段检查。
## 运行
在仓库的 `rust/` 目录执行,使用锁定工具链:
```sh
cargo +1.95.0 bench --locked --offline --bench performance -- --storage
cargo +1.95.0 bench --locked --offline --bench performance -- --map-values
cargo +1.95.0 bench --locked --offline --bench performance -- --json
```
| 参数 | 工作负载 |
| --- | --- |
| 不传参数 | 基础内核 |
| `--storage`、`--map-values` | Map/List 的构造、查找、借用和筛选 |
| `--collections`、`--handlers`、`--text`、`--bytes` | 集合处理、函数传递、文本和字节 |
| `--numeric`、`--decimal-ops`、`--decimal-sum` | 数值与十进制计算 |
| `--application`、`--query` | CMD、JSON 输入输出和 query 解码 |
| `--json`、`--json-document` | JSON 与动态文档 |
| `--resources`、`--tasks` | 文件、流、任务调度和取消 |
| `--database`、`--database-postgres` | 数据库操作,PostgreSQL 需独立测试配置 |
| `--websocket-protocol` | 独立协议对端的消息传输 |
| `--websocket` | 共享运行库的 WebSocket 生成适配 |
其他诊断开关见主入口及 `performance/extended/`、`performance/transport/`。比较程序保存在 `rust/target/programs/release/`,使用 `--build-only` 可只构建,再单独运行生成的程序。
Python 驱动从仓库根使用,先查看参数:
```sh
python3 test/performance/kernel_go.py --help
python3 test/performance/http_go.py --help
python3 test/performance/cms.py --help
```
这些测试可能编译程序、启动回环服务或访问测试数据库;地址和工具路径使用现有测试配置,不能指向业务数据。
## 公平比较
- 使用相同语义、输入、精度、依赖、编译选项和资源限制。Dever 的错误处理、复制和任务清理,参照也须完成。
- 绑定可用 CPU,避免同时构建或跑其他基准。记录频率、节流和负载,保留正向与反向执行顺序。
- 提前固定轮次和预热次数,保留全部样本、绝对耗时、失败次数及源码/二进制摘要,不测到通过才停。
- 独立 Rust 参照用于比较实现;同表、同函数或共享运行库仅用于诊断生成层与测量波动。
- 报告修改前后及相对参照的变化。一次快结果不能代表稳定提速,一个样例不能代表整门语言。
## 网络与内存
网络结果须同时检查响应内容、错误、丢弃请求和实际测量时长,不能只看 QPS。客户端与服务端分别限制 CPU;并发数相同不等于负载相同。
`--memory` 构建分配诊断产物,探针位于 `test/rust/performance/memory.c`。分配次数、存活字节、RSS/PSS 和 cgroup 内存分别报告;插桩结果不作为普通性能耗时。
## 保存结果
原始数据放在忽略的 `target/performance/` 或测试输出目录,与源码提交和编译器摘要对应。README 只维护测试方法,不追加逐轮成绩和修改日志。