Skip to content

perf: optimize batch policy removal#1729

Open
huynhanx03 wants to merge 1 commit intoapache:masterfrom
huynhanx03:master
Open

perf: optimize batch policy removal#1729
huynhanx03 wants to merge 1 commit intoapache:masterfrom
huynhanx03:master

Conversation

@huynhanx03
Copy link
Copy Markdown

Overview

Optimize batch policy removal by rebuilding Policy and PolicyMap once in RemovePoliciesWithAffected. The previous implementation removed each rule one by one and updated policy indexes after every deletion, which becomes expensive for large batch removals.

Change

  • Remove policies in batch by collecting keys, compacting Policy, and rebuilding PolicyMap once.
  • Add BenchmarkRemovePoliciesLarge to cover batch removal performance.

Benchmark

goos:  darwin
goarch: arm64
cpu:   Apple M1

BenchmarkRemovePoliciesLarge
metric      old       new      delta
ns/op       481,529   14,657   -97.0%
B/op        155,938   12,660   -91.9%
allocs/op   5,159     207      -96.0%

Signed-off-by: huynhanx03 <157712338+huynhanx03@users.noreply.github.com>
@huynhanx03
Copy link
Copy Markdown
Author

Hi @hsluoyz , could you review?

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 5, 2026

Benchmark Comparison

Comparing base branch (16b0c89)
vs PR branch (69bc1a8)

goos: linux
goarch: amd64
pkg: github.com/casbin/casbin/v3
cpu: AMD EPYC 9V74 80-Core Processor                
                                                 │ base-bench.txt │             pr-bench.txt             │
                                                 │     sec/op     │    sec/op     vs base                      Diff          │
CachedRaw                                          18.52n ± ∞ ¹   18.38n ± ∞ ¹       ~ (p=1.000 n=1) ²         -0.76% ➡️
CachedBasicModel                                   150.7n ± ∞ ¹   146.4n ± ∞ ¹       ~ (p=1.000 n=1) ²         -2.85% ➡️
CachedRBACModel                                    155.7n ± ∞ ¹   146.3n ± ∞ ¹       ~ (p=1.000 n=1) ²         -6.04% ➡️
CachedRBACModelSmall                               154.6n ± ∞ ¹   150.7n ± ∞ ¹       ~ (p=1.000 n=1) ²         -2.52% ➡️
CachedRBACModelMedium                              164.3n ± ∞ ¹   157.4n ± ∞ ¹       ~ (p=1.000 n=1) ²         -4.20% ➡️
CachedRBACModelLarge                               145.6n ± ∞ ¹   142.2n ± ∞ ¹       ~ (p=1.000 n=1) ²         -2.34% ➡️
CachedRBACModelWithResourceRoles                   148.5n ± ∞ ¹   153.5n ± ∞ ¹       ~ (p=1.000 n=1) ²         +3.37% ➡️
CachedRBACModelWithDomains                         157.5n ± ∞ ¹   156.2n ± ∞ ¹       ~ (p=1.000 n=1) ²         -0.83% ➡️
CachedABACModel                                    2.559µ ± ∞ ¹   2.498µ ± ∞ ¹       ~ (p=1.000 n=1) ²         -2.38% ➡️
CachedKeyMatchModel                                160.8n ± ∞ ¹   164.5n ± ∞ ¹       ~ (p=1.000 n=1) ²         +2.30% ➡️
CachedRBACModelWithDeny                            146.3n ± ∞ ¹   147.7n ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.96% ➡️
CachedPriorityModel                                147.1n ± ∞ ¹   147.5n ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.27% ➡️
CachedWithEnforceContext                           209.2n ± ∞ ¹   210.3n ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.53% ➡️
CachedRBACModelMediumParallel                      153.4n ± ∞ ¹   153.5n ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.07% ➡️
HasPolicySmall                                     378.6n ± ∞ ¹   392.4n ± ∞ ¹       ~ (p=1.000 n=1) ²         +3.65% ➡️
HasPolicyMedium                                    383.7n ± ∞ ¹   392.7n ± ∞ ¹       ~ (p=1.000 n=1) ²         +2.35% ➡️
HasPolicyLarge                                     412.9n ± ∞ ¹   414.8n ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.46% ➡️
AddPolicySmall                                     462.2n ± ∞ ¹   460.9n ± ∞ ¹       ~ (p=1.000 n=1) ²         -0.28% ➡️
AddPolicyMedium                                    675.6n ± ∞ ¹   640.1n ± ∞ ¹       ~ (p=1.000 n=1) ²         -5.25% ➡️
AddPolicyLarge                                     1.133µ ± ∞ ¹   1.109µ ± ∞ ¹       ~ (p=1.000 n=1) ²         -2.12% ➡️
RemovePolicySmall                                  431.4n ± ∞ ¹   429.6n ± ∞ ¹       ~ (p=1.000 n=1) ²         -0.42% ➡️
RemovePolicyMedium                                 458.0n ± ∞ ¹   457.0n ± ∞ ¹       ~ (p=1.000 n=1) ²         -0.22% ➡️
RemovePolicyLarge                                  516.6n ± ∞ ¹   501.1n ± ∞ ¹       ~ (p=1.000 n=1) ²         -3.00% ➡️
Raw                                                18.51n ± ∞ ¹   18.37n ± ∞ ¹       ~ (p=1.000 n=1) ²         -0.76% ➡️
BasicModel                                         3.370µ ± ∞ ¹   3.373µ ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.09% ➡️
RBACModel                                          5.092µ ± ∞ ¹   5.017µ ± ∞ ¹       ~ (p=1.000 n=1) ²         -1.47% ➡️
RBACModelSizes/small                               47.48µ ± ∞ ¹   43.71µ ± ∞ ¹       ~ (p=1.000 n=1) ²         -7.94% ➡️
RBACModelSizes/medium                              471.8µ ± ∞ ¹   453.6µ ± ∞ ¹       ~ (p=1.000 n=1) ²         -3.86% ➡️
RBACModelSizes/large                               5.489m ± ∞ ¹   5.493m ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.07% ➡️
RBACModelSmall                                     55.11µ ± ∞ ¹   52.01µ ± ∞ ¹       ~ (p=1.000 n=1) ²         -5.63% ➡️
RBACModelMedium                                    540.7µ ± ∞ ¹   503.5µ ± ∞ ¹       ~ (p=1.000 n=1) ²         -6.88% ➡️
RBACModelLarge                                     5.664m ± ∞ ¹   5.413m ± ∞ ¹       ~ (p=1.000 n=1) ²         -4.43% ➡️
RBACModelWithResourceRoles                         4.197µ ± ∞ ¹   4.119µ ± ∞ ¹       ~ (p=1.000 n=1) ²         -1.86% ➡️
RBACModelWithDomains                               4.716µ ± ∞ ¹   4.725µ ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.19% ➡️
ABACModel                                          2.451µ ± ∞ ¹   2.441µ ± ∞ ¹       ~ (p=1.000 n=1) ²         -0.41% ➡️
ABACRuleModel                                      3.931m ± ∞ ¹   3.930m ± ∞ ¹       ~ (p=1.000 n=1) ²         -0.03% ➡️
KeyMatchModel                                      5.647µ ± ∞ ¹   5.534µ ± ∞ ¹       ~ (p=1.000 n=1) ²         -2.00% ➡️
RBACModelWithDeny                                  6.533µ ± ∞ ¹   6.354µ ± ∞ ¹       ~ (p=1.000 n=1) ²         -2.74% ➡️
PriorityModel                                      3.891µ ± ∞ ¹   3.871µ ± ∞ ¹       ~ (p=1.000 n=1) ²         -0.51% ➡️
RBACModelWithDomainPatternLarge                    12.57µ ± ∞ ¹   12.49µ ± ∞ ¹       ~ (p=1.000 n=1) ²         -0.64% ➡️
RoleManagerSmall                                   42.15µ ± ∞ ¹   41.63µ ± ∞ ¹       ~ (p=1.000 n=1) ²         -1.23% ➡️
RoleManagerMedium                                  454.0µ ± ∞ ¹   451.2µ ± ∞ ¹       ~ (p=1.000 n=1) ²         -0.62% ➡️
RoleManagerLarge                                   5.796m ± ∞ ¹   5.937m ± ∞ ¹       ~ (p=1.000 n=1) ²         +2.43% ➡️
BuildRoleLinksWithPatternLarge                     252.3m ± ∞ ¹   248.8m ± ∞ ¹       ~ (p=1.000 n=1) ²         -1.39% ➡️
BuildRoleLinksWithDomainPatternLarge               8.236m ± ∞ ¹   8.398m ± ∞ ¹       ~ (p=1.000 n=1) ²         +1.97% ➡️
BuildRoleLinksWithPatternAndDomainPatternLarge     259.9m ± ∞ ¹   255.6m ± ∞ ¹       ~ (p=1.000 n=1) ²         -1.65% ➡️
HasLinkWithPatternLarge                            820.0n ± ∞ ¹   793.3n ± ∞ ¹       ~ (p=1.000 n=1) ²         -3.26% ➡️
HasLinkWithDomainPatternLarge                      329.8n ± ∞ ¹   322.7n ± ∞ ¹       ~ (p=1.000 n=1) ²         -2.15% ➡️
HasLinkWithPatternAndDomainPatternLarge            828.2n ± ∞ ¹   806.0n ± ∞ ¹       ~ (p=1.000 n=1) ²         -2.68% ➡️
ConcurrentHasLinkWithMatching                      1.119µ ± ∞ ¹   1.159µ ± ∞ ¹       ~ (p=1.000 n=1) ²         +3.57% ➡️
RemovePoliciesLarge                                               23.31µ ± ∞ ¹
geomean                                              4.549µ         4.638µ                                     +1.96% ➡️
¹ need >= 6 samples for confidence interval at level 0.95
² need >= 4 samples to detect a difference at alpha level 0.05

                                                 │ base-bench.txt │             pr-bench.txt              │
                                                 │      B/op      │     B/op       vs base                     Diff          │
CachedRaw                                           0.000 ± ∞ ¹     0.000 ± ∞ ¹       ~ (p=1.000 n=1) ²        +0.00% ➡️
CachedBasicModel                                    104.0 ± ∞ ¹     104.0 ± ∞ ¹       ~ (p=1.000 n=1) ²        +0.00% ➡️
CachedRBACModel                                     104.0 ± ∞ ¹     104.0 ± ∞ ¹       ~ (p=1.000 n=1) ²        +0.00% ➡️
CachedRBACModelSmall                                104.0 ± ∞ ¹     104.0 ± ∞ ¹       ~ (p=1.000 n=1) ²        +0.00% ➡️
CachedRBACModelMedium                               104.0 ± ∞ ¹     104.0 ± ∞ ¹       ~ (p=1.000 n=1) ²        +0.00% ➡️
CachedRBACModelLarge                                96.00 ± ∞ ¹     96.00 ± ∞ ¹       ~ (p=1.000 n=1) ²        +0.00% ➡️
CachedRBACModelWithResourceRoles                    104.0 ± ∞ ¹     104.0 ± ∞ ¹       ~ (p=1.000 n=1) ²        +0.00% ➡️
CachedRBACModelWithDomains                          120.0 ± ∞ ¹     120.0 ± ∞ ¹       ~ (p=1.000 n=1) ²        +0.00% ➡️
CachedABACModel                                   1.498Ki ± ∞ ¹   1.498Ki ± ∞ ¹       ~ (p=1.000 n=1) ²        +0.00% ➡️
CachedKeyMatchModel                                 152.0 ± ∞ ¹     152.0 ± ∞ ¹       ~ (p=1.000 n=1) ²        +0.00% ➡️
CachedRBACModelWithDeny                             104.0 ± ∞ ¹     104.0 ± ∞ ¹       ~ (p=1.000 n=1) ²        +0.00% ➡️
CachedPriorityModel                                 104.0 ± ∞ ¹     104.0 ± ∞ ¹       ~ (p=1.000 n=1) ²        +0.00% ➡️
CachedWithEnforceContext                            176.0 ± ∞ ¹     176.0 ± ∞ ¹       ~ (p=1.000 n=1) ²        +0.00% ➡️
CachedRBACModelMediumParallel                       104.0 ± ∞ ¹     104.0 ± ∞ ¹       ~ (p=1.000 n=1) ²        +0.00% ➡️
HasPolicySmall                                      102.0 ± ∞ ¹     102.0 ± ∞ ¹       ~ (p=1.000 n=1) ²        +0.00% ➡️
HasPolicyMedium                                     109.0 ± ∞ ¹     109.0 ± ∞ ¹       ~ (p=1.000 n=1) ²        +0.00% ➡️
HasPolicyLarge                                      117.0 ± ∞ ¹     117.0 ± ∞ ¹       ~ (p=1.000 n=1) ²        +0.00% ➡️
AddPolicySmall                                      152.0 ± ∞ ¹     152.0 ± ∞ ¹       ~ (p=1.000 n=1) ²        +0.00% ➡️
AddPolicyMedium                                     166.0 ± ∞ ¹     166.0 ± ∞ ¹       ~ (p=1.000 n=1) ²        +0.00% ➡️
AddPolicyLarge                                      428.0 ± ∞ ¹     421.0 ± ∞ ¹       ~ (p=1.000 n=1) ³        -1.64% ➡️
RemovePolicySmall                                   166.0 ± ∞ ¹     166.0 ± ∞ ¹       ~ (p=1.000 n=1) ²        +0.00% ➡️
RemovePolicyMedium                                  173.0 ± ∞ ¹     173.0 ± ∞ ¹       ~ (p=1.000 n=1) ²        +0.00% ➡️
RemovePolicyLarge                                   181.0 ± ∞ ¹     181.0 ± ∞ ¹       ~ (p=1.000 n=1) ²        +0.00% ➡️
Raw                                                 0.000 ± ∞ ¹     0.000 ± ∞ ¹       ~ (p=1.000 n=1) ²        +0.00% ➡️
BasicModel                                        1.474Ki ± ∞ ¹   1.472Ki ± ∞ ¹       ~ (p=1.000 n=1) ³        -0.14% ➡️
RBACModel                                         2.028Ki ± ∞ ¹   2.026Ki ± ∞ ¹       ~ (p=1.000 n=1) ³        -0.10% ➡️
RBACModelSizes/small                              19.72Ki ± ∞ ¹   19.63Ki ± ∞ ¹       ~ (p=1.000 n=1) ³        -0.46% ➡️
RBACModelSizes/medium                             187.3Ki ± ∞ ¹   187.2Ki ± ∞ ¹       ~ (p=1.000 n=1) ³        -0.05% ➡️
RBACModelSizes/large                              1.810Mi ± ∞ ¹   1.812Mi ± ∞ ¹       ~ (p=1.000 n=1) ³        +0.11% ➡️
RBACModelSmall                                    19.73Ki ± ∞ ¹   19.72Ki ± ∞ ¹       ~ (p=1.000 n=1) ³        -0.05% ➡️
RBACModelMedium                                   190.1Ki ± ∞ ¹   189.7Ki ± ∞ ¹       ~ (p=1.000 n=1) ³        -0.21% ➡️
RBACModelLarge                                    1.840Mi ± ∞ ¹   1.840Mi ± ∞ ¹       ~ (p=1.000 n=1) ³        +0.00% ➡️
RBACModelWithResourceRoles                        1.823Ki ± ∞ ¹   1.819Ki ± ∞ ¹       ~ (p=1.000 n=1) ³        -0.22% ➡️
RBACModelWithDomains                              1.798Ki ± ∞ ¹   1.797Ki ± ∞ ¹       ~ (p=1.000 n=1) ³        -0.06% ➡️
ABACModel                                         1.490Ki ± ∞ ¹   1.489Ki ± ∞ ¹       ~ (p=1.000 n=1) ³        -0.07% ➡️
ABACRuleModel                                     1.176Mi ± ∞ ¹   1.175Mi ± ∞ ¹       ~ (p=1.000 n=1) ³        -0.09% ➡️
KeyMatchModel                                     2.983Ki ± ∞ ¹   2.980Ki ± ∞ ¹       ~ (p=1.000 n=1) ³        -0.10% ➡️
RBACModelWithDeny                                 2.434Ki ± ∞ ¹   2.429Ki ± ∞ ¹       ~ (p=1.000 n=1) ³        -0.21% ➡️
PriorityModel                                     1.735Ki ± ∞ ¹   1.733Ki ± ∞ ¹       ~ (p=1.000 n=1) ³        -0.12% ➡️
RBACModelWithDomainPatternLarge                   8.684Ki ± ∞ ¹   8.673Ki ± ∞ ¹       ~ (p=1.000 n=1) ³        -0.13% ➡️
RoleManagerSmall                                    800.0 ± ∞ ¹     800.0 ± ∞ ¹       ~ (p=1.000 n=1) ²        +0.00% ➡️
RoleManagerMedium                                 13.63Ki ± ∞ ¹   13.63Ki ± ∞ ¹       ~ (p=1.000 n=1) ²        +0.00% ➡️
RoleManagerLarge                                  224.6Ki ± ∞ ¹   224.6Ki ± ∞ ¹       ~ (p=1.000 n=1) ²        +0.00% ➡️
BuildRoleLinksWithPatternLarge                    60.71Mi ± ∞ ¹   60.74Mi ± ∞ ¹       ~ (p=1.000 n=1) ³        +0.05% ➡️
BuildRoleLinksWithDomainPatternLarge              3.940Mi ± ∞ ¹   3.940Mi ± ∞ ¹       ~ (p=1.000 n=1) ³        +0.00% ➡️
BuildRoleLinksWithPatternAndDomainPatternLarge    62.39Mi ± ∞ ¹   62.34Mi ± ∞ ¹       ~ (p=1.000 n=1) ³        -0.08% ➡️
HasLinkWithPatternLarge                             112.0 ± ∞ ¹     112.0 ± ∞ ¹       ~ (p=1.000 n=1) ²        +0.00% ➡️
HasLinkWithDomainPatternLarge                       16.00 ± ∞ ¹     16.00 ± ∞ ¹       ~ (p=1.000 n=1) ²        +0.00% ➡️
HasLinkWithPatternAndDomainPatternLarge             112.0 ± ∞ ¹     112.0 ± ∞ ¹       ~ (p=1.000 n=1) ²        +0.00% ➡️
ConcurrentHasLinkWithMatching                       736.0 ± ∞ ¹     736.0 ± ∞ ¹       ~ (p=1.000 n=1) ²        +0.00% ➡️
RemovePoliciesLarge                                               12.37Ki ± ∞ ¹
geomean                                                         ⁴                                              -0.07% ➡️               ⁴
¹ need >= 6 samples for confidence interval at level 0.95
² all samples are equal
³ need >= 4 samples to detect a difference at alpha level 0.05
⁴ summaries must be >0 to compute geomean

                                                 │ base-bench.txt │             pr-bench.txt             │
                                                 │   allocs/op    │  allocs/op    vs base                      Diff          │
CachedRaw                                           0.000 ± ∞ ¹    0.000 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
CachedBasicModel                                    4.000 ± ∞ ¹    4.000 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
CachedRBACModel                                     4.000 ± ∞ ¹    4.000 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
CachedRBACModelSmall                                4.000 ± ∞ ¹    4.000 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
CachedRBACModelMedium                               4.000 ± ∞ ¹    4.000 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
CachedRBACModelLarge                                3.000 ± ∞ ¹    3.000 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
CachedRBACModelWithResourceRoles                    4.000 ± ∞ ¹    4.000 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
CachedRBACModelWithDomains                          4.000 ± ∞ ¹    4.000 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
CachedABACModel                                     18.00 ± ∞ ¹    18.00 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
CachedKeyMatchModel                                 4.000 ± ∞ ¹    4.000 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
CachedRBACModelWithDeny                             4.000 ± ∞ ¹    4.000 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
CachedPriorityModel                                 4.000 ± ∞ ¹    4.000 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
CachedWithEnforceContext                            4.000 ± ∞ ¹    4.000 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
CachedRBACModelMediumParallel                       4.000 ± ∞ ¹    4.000 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
HasPolicySmall                                      4.000 ± ∞ ¹    4.000 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
HasPolicyMedium                                     4.000 ± ∞ ¹    4.000 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
HasPolicyLarge                                      5.000 ± ∞ ¹    5.000 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
AddPolicySmall                                      6.000 ± ∞ ¹    6.000 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
AddPolicyMedium                                     7.000 ± ∞ ¹    7.000 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
AddPolicyLarge                                      9.000 ± ∞ ¹    9.000 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
RemovePolicySmall                                   7.000 ± ∞ ¹    7.000 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
RemovePolicyMedium                                  7.000 ± ∞ ¹    7.000 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
RemovePolicyLarge                                   8.000 ± ∞ ¹    8.000 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
Raw                                                 0.000 ± ∞ ¹    0.000 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
BasicModel                                          18.00 ± ∞ ¹    18.00 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
RBACModel                                           36.00 ± ∞ ¹    36.00 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
RBACModelSizes/small                                481.0 ± ∞ ¹    481.0 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
RBACModelSizes/medium                              4.830k ± ∞ ¹   4.830k ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
RBACModelSizes/large                               48.13k ± ∞ ¹   48.17k ± ∞ ¹       ~ (p=1.000 n=1) ³         +0.08% ➡️
RBACModelSmall                                      616.0 ± ∞ ¹    616.0 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
RBACModelMedium                                    6.016k ± ∞ ¹   6.016k ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
RBACModelLarge                                     60.08k ± ∞ ¹   60.07k ± ∞ ¹       ~ (p=1.000 n=1) ³         -0.02% ➡️
RBACModelWithResourceRoles                          28.00 ± ∞ ¹    28.00 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
RBACModelWithDomains                                26.00 ± ∞ ¹    26.00 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
ABACModel                                           17.00 ± ∞ ¹    17.00 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
ABACRuleModel                                      34.08k ± ∞ ¹   34.08k ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
KeyMatchModel                                       38.00 ± ∞ ¹    38.00 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
RBACModelWithDeny                                   50.00 ± ∞ ¹    50.00 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
PriorityModel                                       23.00 ± ∞ ¹    23.00 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
RBACModelWithDomainPatternLarge                     73.00 ± ∞ ¹    73.00 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
RoleManagerSmall                                    100.0 ± ∞ ¹    100.0 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
RoleManagerMedium                                  1.744k ± ∞ ¹   1.744k ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
RoleManagerLarge                                   19.74k ± ∞ ¹   19.74k ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
BuildRoleLinksWithPatternLarge                     3.560M ± ∞ ¹   3.560M ± ∞ ¹       ~ (p=1.000 n=1) ³         +0.00% ➡️
BuildRoleLinksWithDomainPatternLarge               120.2k ± ∞ ¹   120.2k ± ∞ ¹       ~ (p=1.000 n=1) ³         +0.00% ➡️
BuildRoleLinksWithPatternAndDomainPatternLarge     3.637M ± ∞ ¹   3.637M ± ∞ ¹       ~ (p=1.000 n=1) ³         +0.00% ➡️
HasLinkWithPatternLarge                             9.000 ± ∞ ¹    9.000 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
HasLinkWithDomainPatternLarge                       1.000 ± ∞ ¹    1.000 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
HasLinkWithPatternAndDomainPatternLarge             9.000 ± ∞ ¹    9.000 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
ConcurrentHasLinkWithMatching                       11.00 ± ∞ ¹    11.00 ± ∞ ¹       ~ (p=1.000 n=1) ²         +0.00% ➡️
RemovePoliciesLarge                                                207.0 ± ∞ ¹
geomean                                                         ⁴                                              +0.00% ➡️               ⁴
¹ need >= 6 samples for confidence interval at level 0.95
² all samples are equal
³ need >= 4 samples to detect a difference at alpha level 0.05
⁴ summaries must be >0 to compute geomean

🤖 This comment will be automatically updated with the latest benchmark results.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant