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
การกำหนดค่า testbed มีดังนี้:
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
นี่คือผลการทดสอบการทำ benchmark ที่ได้จากการทำงาน 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 |
Deny-override | 6 กฎ (2 ผู้ใช้, 1 บทบาท) | NA |
Priority | 9 กฎ (2 ผู้ใช้, 2 บทบาท) | 0.084684 |
ค่าใช้จ่ายเพิ่มเติมจากการบังคับใช้นโยบายใน Casbin CPP ได้รับการทดสอบในไดเรกทอรี tests/benchmarks
โดยใช้ เครื่องมือทดสอบของ Google การกำหนดค่า testbed มีดังนี้:
Intel(R) Core(TM) i5-6300HQ CPU @ 2.30GHz, 4 cores, 4 threads
นี่คือผลการทดสอบการทำ benchmark ที่ได้จากการทำงานเป้าหมาย casbin_benchmark
ที่สร้างในการกำหนดค่า Release
(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 |
Priority | 9 กฎ (2 ผู้ใช้, 2 บทบาท) | 0.035 |
The overhead of policy enforcement in Lua Casbin has been benchmarked in bench.lua. The testbed configuration is as follows:
AMD Ryzen(TM) 5 4600H CPU @ 3.0GHz, 6 Cores, 12 Threads
Here are the benchmarking results obtained by running luajit bench.lua
(op = an enforce()
call, ms = millisecond):
Test case | Rule size | Time overhead (ms/op) |
---|---|---|
ACL | 2 rules (2 users) | 0.0533 |
RBAC | 5 rules (2 users, 1 role) | 0.0972 |
RBAC (small) | 1100 rules (1000 users, 100 roles) | 0.8598 |
RBAC (medium) | 11000 rules (10000 users, 1000 roles) | 8.6848 |
RBAC (large) | 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 |
Deny-override | 6 กฎ (ผู้ใช้ 2 คน, บทบาท 1 บทบาท) | 0.1934 |
Priority | 9 กฎ (ผู้ใช้ 2 คน, บทบาท 2 บทบาท) | 0.1437 |
Benchmark monitoring
In the embedded web page below, you can see the performance changes of Casbin for each commit.
You can also directly browse it at: https://v1.casbin.org/casbin/benchmark-monitoring