4 个版本
0.1.4 | 2024年5月21日 |
---|---|
0.1.3 | 2024年4月3日 |
0.1.1 | 2024年2月9日 |
0.1.0 | 2024年2月9日 |
#1755 in 魔法豆
每月下载量 5,754 次
48KB
556 行
canbench
canbench
是用于在互联网计算机上基准测试 canister 的工具。
背景
互联网计算机上的 canister 智能合约会消耗计算和内存资源。由于资源有限,canister 执行消息(交易)时存在限制。
- 指令:与计算和内存访问量相关联的递增计数器。
- 脏页:写入的内存页数。
单个消息执行必须保持在允许的范围内,否则将被终止。 canbench
为开发者提供工具和洞察,以了解其代码如何使用指令和内存。一旦可以从 IC 中检索脏页信息,将支持报告脏页。
用例
- 了解 canister 如何消耗指令、堆内存和稳定内存。
- 在本地或 CI 上检测性能退化。
- 分析性能瓶颈所在。
特性
-
相关指标
通常基准测试工具会运行多次基准测试并返回平均值。在互联网计算机上,由于仪器是确定的,这种方法既不理想也不具有洞察力。相反,
canbench
报告消耗的指令数量以及堆和稳定内存的变化。 -
易于检测退化
canbench
允许您将基准测试结果持久化到您的 canister 仓库中。存储基准测试结果允许canbench
确定性能相对于过去的变化,从而检测退化。 -
宽松的指令限制
虽然互联网计算机上的消息受限于数十亿条指令,但
canbench
可以运行高达 10 万亿条指令的基准测试,让您能够根据需要编写资源密集型的基准测试。 -
语言无关
canbench
理论上可以基准测试用任何语言编写的 canisters。最初仅支持 Rust,但可以轻松引入对其他语言的支持。
安装
cargo install canbench
快速入门(Rust)
请参阅crate 的文档。
Github CI 支持
canbench
可用于 Github CI 以自动检测性能变化。请查看此存储库中的工作流程示例。您需要以下内容:
- 用于执行基准测试的脚本,可在
scripts
目录中找到。 - 一个用于
canbench
发布基准测试结果的评论的工作流程。请参阅canbench-post-comment.yml
。 - 一个用于上传 PR 编号的作业。这对于步骤 #2 正确工作是必要的。请参阅
upload-pr-number
在ci.yml
。 - CI 中的基准测试作业。请参阅
benchmark-fibonacci-example
在ci.yml
。
一旦设置了 CI 工作流程,如果没有检测到重大的性能变化,作业将通过,否则将失败。会在 PR 中添加注释以显示结果。请参阅此 PR 中的示例。
依赖关系
~17–36MB
~570K SLoC