Benchmarks
이 페이지는 다양한 모델과 규칙 크기에 대한 enforcement 오버헤드(Enforce() 호출당 시간 및 메모리)를 보고합니다. 결과는 하드웨어와 언어에 따라 달 라지므로 대략적인 가이드로만 사용하세요.
- Lua (JIT)
Go 벤치마크: 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() 호출 1회, 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 |
| Deny-override | 6개 규칙 (2명의 사용자, 1개의 역할) | 0.023281 | 8.370 |
| Priority | 9개 규칙 (2명의 사용자, 2개의 역할) | 0.016389 | 5.313 |
Pycasbin의 정책 적용 오버헤드는 tests/benchmarks에서 벤치마킹됩니다. 테스트 환경:
Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz (Run 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 |
| Deny-override | 6개 규칙 (2명의 사용자, 1개의 역할) | NA |
| Priority | 9개 규칙 (2명의 사용자, 2개의 역할) | 0.084684 |
Casbin CPP의 정책 적용 오버헤드는 Google의 벤치마킹 도구를 사용하여 tests/benchmarks에서 벤치마킹됩니다. 테스트 환경:
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 |
| Deny-override | 6개 규칙 (2명의 사용자, 1개의 역할) | 0.0246 |
| Priority | 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 = 밀리초):
| 테스트 케이스 | 규칙 크기 | 시간 오버헤드 (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 |
| 거부 우선(Deny-override) | 6 규칙 (2 사용자, 1 역할) | 0.1934 |
| 우선순위 | 9 규칙 (2 사용자, 2 역할) | 0.1437 |
벤치마크 모니터링
아래의 내장된 페이지는 커밋에 따른 Casbin의 성능을 표시합니다.
Comments are powered by giscus and GitHub Discussions. They load from giscus.app and GitHub only after you click the button below.