#互联网计算机 #基准测试 #canister #ic #perf

bin+lib canbench

互联网计算机上 canister 的基准测试框架

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 魔法豆

Download history 49/week @ 2024-04-17 114/week @ 2024-04-24 602/week @ 2024-05-01 1110/week @ 2024-05-08 1086/week @ 2024-05-15 1267/week @ 2024-05-22 1579/week @ 2024-05-29 1275/week @ 2024-06-05 1365/week @ 2024-06-12 1287/week @ 2024-06-19 1177/week @ 2024-06-26 1253/week @ 2024-07-03 1117/week @ 2024-07-10 1111/week @ 2024-07-17 1666/week @ 2024-07-24 1653/week @ 2024-07-31

每月下载量 5,754 次

Apache-2.0

48KB
556

Apache-2.0 Chat on the Forum

canbench

canbench 是用于在互联网计算机上基准测试 canister 的工具。

背景

互联网计算机上的 canister 智能合约会消耗计算和内存资源。由于资源有限,canister 执行消息(交易)时存在限制。

  1. 指令:与计算和内存访问量相关联的递增计数器。
  2. 脏页:写入的内存页数。

单个消息执行必须保持在允许的范围内,否则将被终止。 canbench 为开发者提供工具和洞察,以了解其代码如何使用指令和内存。一旦可以从 IC 中检索脏页信息,将支持报告脏页。

用例

  • 了解 canister 如何消耗指令、堆内存和稳定内存。
  • 在本地或 CI 上检测性能退化。
  • 分析性能瓶颈所在。

特性

  • 相关指标

    通常基准测试工具会运行多次基准测试并返回平均值。在互联网计算机上,由于仪器是确定的,这种方法既不理想也不具有洞察力。相反,canbench 报告消耗的指令数量以及堆和稳定内存的变化。

  • 易于检测退化

    canbench 允许您将基准测试结果持久化到您的 canister 仓库中。存储基准测试结果允许 canbench 确定性能相对于过去的变化,从而检测退化。

  • 宽松的指令限制

    虽然互联网计算机上的消息受限于数十亿条指令,但 canbench 可以运行高达 10 万亿条指令的基准测试,让您能够根据需要编写资源密集型的基准测试。

  • 语言无关

    canbench 理论上可以基准测试用任何语言编写的 canisters。最初仅支持 Rust,但可以轻松引入对其他语言的支持。

安装

cargo install canbench

快速入门(Rust)

请参阅crate 的文档

Github CI 支持

canbench 可用于 Github CI 以自动检测性能变化。请查看此存储库中的工作流程示例。您需要以下内容:

  1. 用于执行基准测试的脚本,可在 scripts 目录中找到。
  2. 一个用于 canbench 发布基准测试结果的评论的工作流程。请参阅 canbench-post-comment.yml
  3. 一个用于上传 PR 编号的作业。这对于步骤 #2 正确工作是必要的。请参阅 upload-pr-numberci.yml
  4. CI 中的基准测试作业。请参阅 benchmark-fibonacci-exampleci.yml

一旦设置了 CI 工作流程,如果没有检测到重大的性能变化,作业将通过,否则将失败。会在 PR 中添加注释以显示结果。请参阅此 PR 中的示例。

依赖关系

~17–36MB
~570K SLoC