Benchmarks
- Go
- C++
- Lua (JIT)
Der Overhead der Durchsetzung der Richtlinien ist in model_b_test.go verrechnet. Das Testbed ist:
Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz, 2601 Mhz, 4 Core(s), 8 Logical Processor(s)
Das Benchmarking-Ergebnis von geht Test -bench=. -benchmem ist wie folgt (op = ein Enforce() Aufruf, ms = Millisekunden, KB = Kilo Bytes):
| Testfall | Regelgröße | Zeitüberschreitung (ms/op) | Memory overhead (KB) |
|---|---|---|---|
| ACL | 2 Regeln (2 Benutzer) | 0.015493 | 5.649 |
| RBAC | 5 Regeln (2 Benutzer, 1 Rolle) | 0.021738 | 7.522 |
| RBAC (klein) | 1100 Regeln (1000 Benutzer, 100 Rollen) | 0.164309 | 80.620 |
| RBAC (Medium) | 11000 Regeln (10000 Benutzer, 1000 Rollen) | 2.258262 | 765.152 |
| RBAC (groß) | 110000 Regeln (100000 Benutzer, 10000 Rollen) | 23.916776 | 7,606 |
| RBAC mit Ressourcen-Rollen | 6 Regeln (2 Benutzer, 2 Rollen) | 0.021146 | 7.906 |
| RBAC mit Domänen/Mandanten | 6 Regeln (2 Benutzer, 1 Rolle, 2 Domains) | 0.032696 | 10.755 |
| ABAC | 0 Regel (0 Benutzer) | 0.007510 | 2.328 |
| Ruhen | 5 Regeln (3 Benutzer) | 0.045398 | 91.774 |
| Verweigerung überschreiben | 6 Regeln (2 Benutzer, 1 Rolle) | 0.023281 | 8.370 |
| Priorität | 9 Regeln (2 Benutzer, 2 Rollen) | 0.016389 | 5.313 |
The overhead of policy enforcement of Casbin CPP is benchmarked in tests/benchmarks directory with the help of Google's benchmarking tool. Der Test für diese Benchmarks ist:
Intel(R) Core(TM) i5-6300HQ CPU @ 2.30GHz, 4 Kerne, 4 Threads
Hier ist das Benchmarking-Ergebnis der Ausführung von casbin_benchmark target in Release Konfiguration (op = ein enforce() Aufruf, ms = Millisekunden):
| Testfall | Regelgröße | Zeitüberschreitung (ms/op) |
|---|---|---|
| ACL | 2 Regeln (2 Benutzer) | 0.0195 |
| RBAC | 5 Regeln (2 Benutzer, 1 Rolle) | 0.0288 |
| RBAC (klein) | 1100 Regeln (1000 Benutzer, 100 Rollen) | 0.300 |
| RBAC (Medium) | 11000 Regeln (10000 Benutzer, 1000 Rollen) | 2.113 |
| RBAC (groß) | 110000 Regeln (100000 Benutzer, 10000 Rollen) | 21.450 |
| RBAC mit Ressourcen-Rollen | 6 Regeln (2 Benutzer, 2 Rollen) | 0.03 |
| RBAC mit Domänen/Mandanten | 6 Regeln (2 Benutzer, 1 Rolle, 2 Domains) | 0.041 |
| ABAC | 0 Regel (0 Benutzer) | MN |
| Ruhen | 5 Regeln (3 Benutzer) | MN |
| Verweigerung überschreiben | 6 Regeln (2 Benutzer, 1 Rolle) | 0.0246 |
| Priorität | 9 Regeln (2 Benutzer, 2 Rollen) | 0.035 |
Lua Casbin's Overhead of policy enforcement is benchmarked in bench.lua. Das Testbed war ein Ubuntu VM mit der CPU:
AMD Ryzen(TM) 5 4600H CPU @ 3.0GHz, 6 Kerne, 12 Threads
Das Benchmarking-Ergebnis von luajit bench.lua ist wie folgt (op = enforce() call, ms = Millisekunden):
| Testfall | Regelgröße | Zeitüberschreitung (ms/op) |
|---|---|---|
| ACL | 2 Regeln (2 Benutzer) | 0.0533 |
| RBAC | 5 Regeln (2 Benutzer, 1 Rolle) | 0.0972 |
| RBAC (klein) | 1100 Regeln (1000 Benutzer, 100 Rollen) | 0.8598 |
| RBAC (Medium) | 11000 Regeln (10000 Benutzer, 1000 Rollen) | 8.6848 |
| RBAC (groß) | 110000 Regeln (100000 Benutzer, 10000 Rollen) | 90.3217 |
| RBAC mit Ressourcen-Rollen | 6 Regeln (2 Benutzer, 2 Rollen) | 0.1124 |
| RBAC mit Domänen/Mandanten | 6 Regeln (2 Benutzer, 1 Rolle, 2 Domains) | 0.1978 |
| ABAC | 0 Regel (0 Benutzer) | 0.0305 |
| Ruhen | 5 Regeln (3 Benutzer) | 0.1085 |
| Verweigerung überschreiben | 6 Regeln (2 Benutzer, 1 Rolle) | 0.1934 |
| Priorität | 9 Regeln (2 Benutzer, 2 Rollen) | 0.1437 |