Benchmarks
- Go
- Python
- C++
- Lua (JIT)
策略执行的开销已在model_b_test.go中进行了基准测试。 测试环境配置如下:
Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz, 2601 Mhz, 4 Core(s), 8 Logical Processor(s)
以下是通过运行go test -bench=.
获得的基准测试结果 -benchmem(op = 一个Enforce()
调用,ms = 毫秒,KB = 千字节):
测试用例 | 规则大小 | 时间开销(ms/op) | 内存开销(KB) |
---|---|---|---|
ACL | 2条规则(2个用户) | 0.015493 | 5.649 |
RBAC | 5条规则(2个用户,1个角色) | 0.021738 | 7.522 |
RBAC(小) | 1100条规则(1000个用户,100个角色) | 0.164309 | 80.620 |
RBAC(中) | 11000条规则(10000个用户,1000个角色) | 2.258262 | 765.152 |
RBAC(大) | 110000条规则(100000个用户,10000个角色) | 23.916776 | 7,606 |
带资源角色的RBAC | 6条规则(2个用户,2个角色) | 0.021146 | 7.906 |
带有域/租户的RBAC | 6条规则(2个用户,1个角色,2个域) | 0.032696 | 10.755 |
ABAC | 0条规则(0个用户) | 0.007510 | 2.328 |
RESTful | 5条规则(3个用户) | 0.045398 | 91.774 |
否决覆盖 | 6条规则(2个用户,1个角色) | 0.023281 | 8.370 |
优先级 | 9条规则(2个用户,2个角色) | 0.016389 | 5.313 |
Pycasbin中策略执行的开销已在tests/benchmarks
目录中进行了基准测试。 测试环境配置如下:
Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz (Runned by Github actions)
platform linux -- Python 3.11.4, pytest-7.0.1, pluggy-1.2.0
以下是执行casbin_benchmark
(op = 一个enforce()
调用,ms = 毫秒)获得的基准测试结果:
测试用例 | 规则大小 | 时间开销 (ms/op) |
---|---|---|
ACL | 2条规则(2个用户) | 0.067691 |
RBAC | 5条规则(2个用户,1个角色) | 0.080045 |
RBAC(小) | 1100条规则(1000个用户,100角色) | 0.853590 |
RBAC(中) | 11000条规则(10000个用户,1000个角色) | 6.986668 |
RBAC(大) | 110000条规则(100000个用户,10000个角色) | 77.922851 |
带有资源角色的RBAC | 6条规则(2个用户,2个角色) | 0.106090 |
带有域/租户的RBAC | 6条规则(2个用户,1个角色,2个域) | 0.103628 |
ABAC | 0条规则(0个用户) | 0.053213 |
RESTful | 5条规则(3个用户) | NA |
否决覆盖 | 6条规则(2个用户,1个角色) | NA |
优先级 | 9条规则(2个用户,2个角色) | 0.084684 |
Casbin CPP中策略执行的开销已在tests/benchmarks
目录中使用Google的基准测试工具进行了基准测试。 测试环境配置如下:
Intel(R) Core(TM) i5-6300HQ CPU @ 2.30GHz, 4 cores, 4 threads
以下是从执行Release
配置中构建的casbin_benchmark
目标获得的基准测试结果(op = 一个enforce()
调用,ms = 毫秒):
测试用例 | 规则大小 | 时间开销(ms/op) |
---|---|---|
ACL | 2条规则(2个用户) | 0.0195 |
RBAC | 5条规则(2个用户,1个角色) | 0.0288 |
RBAC(小) | 1100条规则(1000个用户,100个角色) | 0.300 |
RBAC(中) | 11000条规则(10000个用户,1000个角色) | 2.113 |
RBAC(大) | 110000条规则(100000个用户,10000个角色) | 21.450 |
带资源角色的RBAC | 6条规则(2个用户,2个角色) | 0.03 |
带域/租户的RBAC | 6条规则(2个用户,1个角色,2个域) | 0.041 |
ABAC | 0条规则(0个用户) | NA |
RESTful | 5条规则(3个用户) | NA |
拒绝-覆盖 | 6条规则(2个用户,1个角色) | 0.0246 |
优先级 | 9条规则(2个用户,2个角色) | 0.035 |
Lua Casbin中策略执行的开销已在bench.lua中进行了基准测试。 测试环境配置如下:
AMD Ryzen(TM) 5 4600H CPU @ 3.0GHz, 6 Cores, 12 Threads
以下是通过运行luajit bench.lua
获得的基准测试结果(op = 一个enforce()
调用,ms = 毫秒):
测试用例 | 规则大小 | 时间开销(毫秒/操作) |
---|---|---|
ACL | 2条规则(2个用户) | 0.0533 |
RBAC | 5条规则(2个用户,1个角色) | 0.0972 |
RBAC(小) | 1100条规则(1000个用户,100角色) | 0.8598 |
RBAC(中) | 11000条规则(10000个用户,1000个角色) | 8.6848 |
RBAC(大) | 110000条规则(100000个用户,10000个角色) | 90.3217 |
带有资源角色的RBAC | 6条规则(2个用户,2个角色) | 0.1124 |
带有域/租户的RBAC | 6条规则(2个用户,1个角色,2个域) | 0.1978 |
ABAC | 0条规则(0个用户) | 0.0305 |
RESTful | 5条规则(3个用户) | 0.1085 |
拒绝覆盖 | 6条规则(2个用户,1个角色) | 0.1934 |
优先级 | 9条规则(2个用户,2个角色) | 0.1437 |
基准监控
在下面的嵌入式网页中,您可以看到Casbin对每个提交的性能变化。
您也可以直接在以下地址浏览:https://v1.casbin.org/casbin/benchmark-monitoring