Benchmarks
- Go
- Python
- C++
- Lua (JIT)
Politika uygulamanın ek yükü, model_b_test.go dosyasında referans noktası olarak belirlenmiştir. Test ortamı yapılandırması şu şekildedir:
Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz, 2601 Mhz, 4 Core(s), 8 Logical Processor(s)
Aşağıda, go test -bench=. komutunu çalıştırarak elde edilen referans noktası sonuçları bulunmaktadır. -benchmem (op = bir Enforce() çağrısı, ms = milisaniye, KB = kilobayt):
| Test senaryosu | Kural boyutu | Zaman ek yükü (ms/op) | Bellek ek yükü (KB) |
|---|---|---|---|
| ACL | 2 kural (2 kullanıcı) | 0.015493 | 5.649 |
| RBAC | 5 kural (2 kullanıcı, 1 rol) | 0.021738 | 7.522 |
| RBAC (küçük) | 1100 kurallar (1000 kullanıcı, 100 roller) | 0,164309 | 80,620 |
| RBAC (orta) | 11000 kurallar (10000 kullanıcı, 1000 roller) | 2,258262 | 765,152 |
| RBAC (büyük) | 110000 kurallar (100000 kullanıcı, 10000 roller) | 23,916776 | 7.606 |
| Kaynak rolleri ile RBAC | 6 kural (2 kullanıcı, 2 rol) | 0,021146 | 7,906 |
| Alanlar/kiracılar ile RBAC | 6 kural (2 kullanıcı, 1 rol, 2 alan) | 0,032696 | 10,755 |
| ABAC | 0 kural (0 kullanıcı) | 0.007510 | 2.328 |
| RESTful | 5 kural (3 kullanıcı) | 0.045398 | 91.774 |
| Reddet-üstünlük | 6 kural (2 kullanıcı, 1 rol) | 0.023281 | 8.370 |
| Öncelik | 9 kural (2 kullanıcı, 2 rol) | 0.016389 | 5.313 |
Pycasbin içindeki politika uygulama ek yükü, tests/benchmarks dizininde karşılaştırmalı olarak ölçülmüştür. Test ortamı yapılandırması şu şekildedir:
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 çalıştırılarak elde edilen karşılaştırmalı sonuçlar aşağıda verilmiştir (op = bir enforce() çağrısı, ms = milisaniye):
| Test durumu | Kural boyutu | Zaman ek yükü (ms/op) |
|---|---|---|
| ACL | 2 kural (2 kullanıcı) | 0.067691 |
| RBAC | 5 kural (2 kullanıcı, 1 rol) | 0.080045 |
| RBAC (küçük) | 1100 kural (1000 kullanıcı, 100 rol) | 0.853590 |
| RBAC (orta) | 11000 kurallar (10000 kullanıcı, 1000 rol) | 6,986668 |
| RBAC (büyük) | 110000 kurallar (100000 kullanıcı, 10000 rol) | 77,922851 |
| Kaynak rolleri ile RBAC | 6 kurallar (2 kullanıcı, 2 rol) | 0,106090 |
| Alanlar/kiracılar ile RBAC | 6 kural (2 kullanıcı, 1 rol, 2 alan) | 0.103628 |
| ABAC | 0 kural (0 kullanıcı) | 0.053213 |
| RESTful | 5 kural (3 kullanıcı) | NA |
| Reddet-üzerine | 6 kural (2 kullanıcı, 1 rol) | NA |
| Öncelik | 9 kural (2 kullanıcı, 2 rol) | 0,084684 |
Casbin CPP içindeki politika uygulama ek yükü, Google'nin kıyaslama aracı kullanılarak tests/benchmarks dizini içinde kıyaslanmıştır. Test ortamı yapılandırması şu şekildedir:
Intel(R) Core(TM) i5-6300HQ CPU @ 2.30GHz, 4 cores, 4 threads
Release yapılandırmasında inşa edilen casbin_benchmark hedefini çalıştırarak elde edilen kıyaslama sonuçları aşağıda verilmiştir (op = bir enforce() çağrısı, ms = milisaniye):
| Test durumu | Kural boyutu | Zaman ek yükü (ms/op) |
|---|---|---|
| ACL | 2 kural (2 kullanıcı) | 0.0195 |
| RBAC | 5 kural (2 kullanıcı, 1 rol) | 0.0288 |
| RBAC (küçük) | 1100 kural (1000 kullanıcı, 100 rol) | 0.300 |
| RBAC (orta) | 11000 kurallar (10000 kullanıcı, 1000 roller) | 2.113 |
| RBAC (büyük) | 110000 kurallar (100000 kullanıcı, 10000 roller) | 21.450 |
| Kaynak rolleri ile RBAC | 6 kurallar (2 kullanıcı, 2 roller) | 0.03 |
| Alanlar/kiracılar ile RBAC | 6 kurallar (2 kullanıcı, 1 rol, 2 alan) | 0.041 |
| ABAC | 0 kural (0 kullanıcı) | NA |
| RESTful | 5 kural (3 kullanıcı) | NA |
| Reddet-geçersiz kıl | 6 kural (2 kullanıcı, 1 rol) | 0.0246 |
| Öncelik | 9 kural (2 kullanıcı, 2 rol) | 0,035 |
Lua Casbin içindeki politika uygulama ek yükü, bench.lua içinde karşılaştırmalı olarak ölçülmüştür. Test ortamı yapılandırması şu şekildedir:
AMD Ryzen(TM) 5 4600H CPU @ 3.0GHz, 6 Cores, 12 Threads
luajit bench.lua komutunu çalıştırarak elde edilen karşılaştırmalı sonuçlar aşağıdaki gibidir (op = bir enforce() çağrısı, ms = milisaniye):
| Test durumu | Kural boyutu | Zaman ek yükü (ms/op) |
|---|---|---|
| ACL | 2 kural (2 kullanıcı) | 0.0533 |
| RBAC | 5 kural (2 kullanıcı, 1 rol) | 0.0972 |
| RBAC (küçük) | 1100 kural (1000 kullanıcı, 100 rol) | 0.8598 |
| RBAC (orta) | 11000 kural (10000 kullanıcı, 1000 rol) | 8.6848 |
| RBAC (büyük) | 110000 kurallar (100000 kullanıcı, 10000 rol) | 90.3217 |
| Kaynak rolleri ile RBAC | 6 kurallar (2 kullanıcı, 2 rol) | 0.1124 |
| Alanlar/kiracılar ile RBAC | 6 kurallar (2 kullanıcı, 1 rol, 2 alan) | 0.1978 |
| ABAC | 0 kural (0 kullanıcı) | 0.0305 |
| RESTful | 5 kural (3 kullanıcı) | 0.1085 |
| Reddet-üzerine yaz | 6 kural (2 kullanıcı, 1 rol) | 0.1934 |
| Öncelik | 9 kural (2 kullanıcı, 2 rol) | 0.1437 |
Benchmark izleme
Aşağıdaki gömülü web sayfasında, her commit için Casbin'in performans değişikliklerini görebilirsiniz.
Ayrıca doğrudan şu adresten inceleyebilirsiniz: https://v1.casbin.org/casbin/benchmark-monitoring