聊一聊如何使用Crank给我们的类库做基准测试
元数据
作者: Cnblogs.com
标题: 聊一聊如何使用Crank给我们的类库做基准测试
分类: #dotnet
地址: https://www.cnblogs.com/catcher1994/p/17291228.html
笔记
什么是 Crank 跳转
Crank 是.NET团队用于运行基准测试的基础设施,包括(但不限于)TechEmpower Web Framework基准测试中的场景。 Crank 第一次出现在公众的视野应该是在 .NET Conf 2021, @sebastienros 演讲的 Benchmarking ASP.NET Applications with .NET Crank
安装 crank 跳转
dotnet tool update Microsoft.Crank.Controller --version "0.2.0-*" --global
dotnet tool update Microsoft.Crank.Agent --version "0.2.0-*" --global
用 BenchmarkSwitcher 来运行 跳转
public static void Main(string[] args)
{
BenchmarkSwitcher.FromAssembly(typeof(Program).Assembly).Run(args);
}
配置文件 跳转
# 作业
jobs:
# 作业名,自定义
benchmarks:
# 源相关内容
source:
# 这里是本地文件夹,也可以配置远程 repository 和分支
localFolder: .
# 这个是具体的 csproj
project: micro.csproj
# 一些变量
variables:
filterArg: "*"
jobArg: short
# 参数
arguments: --job --filter --memory
options:
# 使用 BenchmarkDotNet
benchmarkDotNet: true
# 场景
scenarios:
# 场景名,自定义
Md5VsSha256:
application:
# 与前面的定义作业名一致
job: benchmarks
# 档案
profiles:
# 档案名,自定义
local:
jobs:
application:
# 代理的地址
endpoints:
- http://localhost:5010
启动代理 跳转
默认端口是 5010
crank-agent
通过控制器向代理发送指令 跳转
crank --config C:\code\crank\samples\micro\micro.benchmarks.yml --scenario Md5VsSha256 --profile local
一般来说,我们会把控制器得到的结果保存在 JSON 文件里面,便于后续作对比或者要出趋势图 跳转
crank --config C:\code\crank\samples\micro\micro.benchmarks.yml --scenario Md5VsSha256 --profile local --json base.json
最后是把这两个结果做一个对比 跳转
crank compare base.json head.json
如果要在不同的机器上面执行要怎么配置 跳转
我们要做的是在配置文件中的 profiles 节点增加机器的代理地址即可
profiles:
local:
jobs:
application:
endpoints:
- http://localhost:5010
remote-win:
jobs:
application:
endpoints:
- http://192.168.1.100:9090
remote-lin:
jobs:
application:
endpoints:
- http://192.168.1.102:9090
本文的示例代码 跳转
https://github.com/catcherwong/library_with_crank
参考资料 跳转
https://github.com/dotnet/crank
https://github.com/sebastienros/aspnetcore
https://github.com/martincostello/api
https://github.com/aspnet/Benchmarks/blob/main/scenarios/efcore.benchmarks.yml