基准测试
策略执行的负载在model_b_test.go中进行基准测试。 测试是:
英特尔 酷睿 i7-6700HQ CPU @ 2.60GHz, 2601 Mhz, 4 核, 8 处理器
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 | 7606 |
具有资源角色的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 |
Casbin CPP 的策略执行测试是在 tests/benchmarks
中, 使用 Google's benchmarking tool 完成的 这些基准的测试结果是:
英特尔 酷睿 i5-6300HQ CPU @ 2.30GHz, 4 核, 4 线程
以下是执行以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 |
Deny-override | 6条规则 (2用户,1个角色) | 0.0246 |
优先级 | 9条规则 (2用户,2个角色) | 0.035 |
Lua Casbin的 策略执行的测试是在 ben.lua 中进行的。 测试台是 Ubuntu VM ,CPU型号为
AMD Ryzen(TM) 5 4600H CPU @ 3.0GHz, 6 核, 12 Threads
luajit bey.lua
的基准结果如下(op = 一个 enforce()
调用, ms = 毫秒):
测试用例 | 规则大小 | 时间开销 (ms/op) |
---|---|---|
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 |