Skip to content

Commit

Permalink
feat: refactor LoadPolicy, delete LoadPolicyFast (#1402)
Browse files Browse the repository at this point in the history
* feat: cut down the lock range in `LoadPolicy`, delete outdated `LoadPolicyFast`

* fix: fix logic
  • Loading branch information
MuZhou233 committed Jun 6, 2024
1 parent 75b90b0 commit 20fd529
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 52 deletions.
46 changes: 32 additions & 14 deletions enforcer.go
Original file line number Diff line number Diff line change
Expand Up @@ -323,11 +323,39 @@ func (e *Enforcer) ClearPolicy() {

// LoadPolicy reloads the policy from file/database.
func (e *Enforcer) LoadPolicy() error {
needToRebuild := false
newModel := e.model.Copy()
newModel, err := e.loadPolicyFromAdapter(e.model)
if err != nil {
return err
}
err = e.applyModifiedModel(newModel)
if err != nil {
return err
}
return nil
}

func (e *Enforcer) loadPolicyFromAdapter(baseModel model.Model) (model.Model, error) {
newModel := baseModel.Copy()
newModel.ClearPolicy()

if err := e.adapter.LoadPolicy(newModel); err != nil && err.Error() != "invalid file path, file path cannot be empty" {
return nil, err
}

if err := newModel.SortPoliciesBySubjectHierarchy(); err != nil {
return nil, err
}

if err := newModel.SortPoliciesByPriority(); err != nil {
return nil, err
}

return newModel, nil
}

func (e *Enforcer) applyModifiedModel(newModel model.Model) error {
var err error
needToRebuild := false
defer func() {
if err != nil {
if e.autoBuildRoleLinks && needToRebuild {
Expand All @@ -336,20 +364,9 @@ func (e *Enforcer) LoadPolicy() error {
}
}()

if err = e.adapter.LoadPolicy(newModel); err != nil && err.Error() != "invalid file path, file path cannot be empty" {
return err
}

if err = newModel.SortPoliciesBySubjectHierarchy(); err != nil {
return err
}

if err = newModel.SortPoliciesByPriority(); err != nil {
return err
}

if e.autoBuildRoleLinks {
needToRebuild = true

if err := e.rebuildRoleLinks(newModel); err != nil {
return err
}
Expand All @@ -358,6 +375,7 @@ func (e *Enforcer) LoadPolicy() error {
return err
}
}

e.model = newModel
e.invalidateMatcherMap()
return nil
Expand Down
44 changes: 6 additions & 38 deletions enforcer_synced.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,6 @@ import (
"github.com/casbin/govaluate"

"github.com/casbin/casbin/v2/persist"
"github.com/casbin/casbin/v2/rbac"
defaultrolemanager "github.com/casbin/casbin/v2/rbac/default-role-manager"
)

// SyncedEnforcer wraps Enforcer and provides synchronized access.
Expand Down Expand Up @@ -117,48 +115,18 @@ func (e *SyncedEnforcer) ClearPolicy() {

// LoadPolicy reloads the policy from file/database.
func (e *SyncedEnforcer) LoadPolicy() error {
e.m.Lock()
defer e.m.Unlock()
return e.Enforcer.LoadPolicy()
}

// LoadPolicyFast is not blocked when adapter calls LoadPolicy.
func (e *SyncedEnforcer) LoadPolicyFast() error {
e.m.RLock()
newModel := e.model.Copy()
newModel, err := e.loadPolicyFromAdapter(e.model)
e.m.RUnlock()

newModel.ClearPolicy()
newRmMap := map[string]rbac.RoleManager{}
var err error

if err = e.adapter.LoadPolicy(newModel); err != nil && err.Error() != "invalid file path, file path cannot be empty" {
return err
}

if err = newModel.SortPoliciesBySubjectHierarchy(); err != nil {
if err != nil {
return err
}

if err = newModel.SortPoliciesByPriority(); err != nil {
e.m.Lock()
err = e.applyModifiedModel(newModel)
e.m.Unlock()
if err != nil {
return err
}

if e.autoBuildRoleLinks {
for ptype := range newModel["g"] {
newRmMap[ptype] = defaultrolemanager.NewRoleManager(10)
}
err = newModel.BuildRoleLinks(newRmMap)
if err != nil {
return err
}
}

// reduce the lock range
e.m.Lock()
defer e.m.Unlock()
e.model = newModel
e.rmMap = newRmMap
return nil
}

Expand Down

1 comment on commit 20fd529

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark

Benchmark suite Current: 20fd529 Previous: 75b90b0 Ratio
BenchmarkCachedRaw 17.54 ns/op 0 B/op 0 allocs/op 17.56 ns/op 0 B/op 0 allocs/op 1.00
BenchmarkCachedRaw - ns/op 17.54 ns/op 17.56 ns/op 1.00
BenchmarkCachedRaw - B/op 0 B/op 0 B/op 1
BenchmarkCachedRaw - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkCachedBasicModel 167.6 ns/op 104 B/op 4 allocs/op 168.6 ns/op 104 B/op 4 allocs/op 0.99
BenchmarkCachedBasicModel - ns/op 167.6 ns/op 168.6 ns/op 0.99
BenchmarkCachedBasicModel - B/op 104 B/op 104 B/op 1
BenchmarkCachedBasicModel - allocs/op 4 allocs/op 4 allocs/op 1
BenchmarkCachedRBACModel 168.2 ns/op 104 B/op 4 allocs/op 169.2 ns/op 104 B/op 4 allocs/op 0.99
BenchmarkCachedRBACModel - ns/op 168.2 ns/op 169.2 ns/op 0.99
BenchmarkCachedRBACModel - B/op 104 B/op 104 B/op 1
BenchmarkCachedRBACModel - allocs/op 4 allocs/op 4 allocs/op 1
BenchmarkCachedRBACModelSmall 169.7 ns/op 104 B/op 4 allocs/op 174.5 ns/op 104 B/op 4 allocs/op 0.97
BenchmarkCachedRBACModelSmall - ns/op 169.7 ns/op 174.5 ns/op 0.97
BenchmarkCachedRBACModelSmall - B/op 104 B/op 104 B/op 1
BenchmarkCachedRBACModelSmall - allocs/op 4 allocs/op 4 allocs/op 1
BenchmarkCachedRBACModelMedium 179.3 ns/op 104 B/op 4 allocs/op 183 ns/op 104 B/op 4 allocs/op 0.98
BenchmarkCachedRBACModelMedium - ns/op 179.3 ns/op 183 ns/op 0.98
BenchmarkCachedRBACModelMedium - B/op 104 B/op 104 B/op 1
BenchmarkCachedRBACModelMedium - allocs/op 4 allocs/op 4 allocs/op 1
BenchmarkCachedRBACModelLarge 162 ns/op 96 B/op 3 allocs/op 158.7 ns/op 96 B/op 3 allocs/op 1.02
BenchmarkCachedRBACModelLarge - ns/op 162 ns/op 158.7 ns/op 1.02
BenchmarkCachedRBACModelLarge - B/op 96 B/op 96 B/op 1
BenchmarkCachedRBACModelLarge - allocs/op 3 allocs/op 3 allocs/op 1
BenchmarkCachedRBACModelWithResourceRoles 167.6 ns/op 104 B/op 4 allocs/op 171 ns/op 104 B/op 4 allocs/op 0.98
BenchmarkCachedRBACModelWithResourceRoles - ns/op 167.6 ns/op 171 ns/op 0.98
BenchmarkCachedRBACModelWithResourceRoles - B/op 104 B/op 104 B/op 1
BenchmarkCachedRBACModelWithResourceRoles - allocs/op 4 allocs/op 4 allocs/op 1
BenchmarkCachedRBACModelWithDomains 178.5 ns/op 120 B/op 4 allocs/op 188.6 ns/op 120 B/op 4 allocs/op 0.95
BenchmarkCachedRBACModelWithDomains - ns/op 178.5 ns/op 188.6 ns/op 0.95
BenchmarkCachedRBACModelWithDomains - B/op 120 B/op 120 B/op 1
BenchmarkCachedRBACModelWithDomains - allocs/op 4 allocs/op 4 allocs/op 1
BenchmarkCachedABACModel 2816 ns/op 1536 B/op 18 allocs/op 2892 ns/op 1547 B/op 18 allocs/op 0.97
BenchmarkCachedABACModel - ns/op 2816 ns/op 2892 ns/op 0.97
BenchmarkCachedABACModel - B/op 1536 B/op 1547 B/op 0.99
BenchmarkCachedABACModel - allocs/op 18 allocs/op 18 allocs/op 1
BenchmarkCachedKeyMatchModel 185.3 ns/op 152 B/op 4 allocs/op 193.1 ns/op 152 B/op 4 allocs/op 0.96
BenchmarkCachedKeyMatchModel - ns/op 185.3 ns/op 193.1 ns/op 0.96
BenchmarkCachedKeyMatchModel - B/op 152 B/op 152 B/op 1
BenchmarkCachedKeyMatchModel - allocs/op 4 allocs/op 4 allocs/op 1
BenchmarkCachedRBACModelWithDeny 168.2 ns/op 104 B/op 4 allocs/op 176.5 ns/op 104 B/op 4 allocs/op 0.95
BenchmarkCachedRBACModelWithDeny - ns/op 168.2 ns/op 176.5 ns/op 0.95
BenchmarkCachedRBACModelWithDeny - B/op 104 B/op 104 B/op 1
BenchmarkCachedRBACModelWithDeny - allocs/op 4 allocs/op 4 allocs/op 1
BenchmarkCachedPriorityModel 170.6 ns/op 104 B/op 4 allocs/op 172.4 ns/op 104 B/op 4 allocs/op 0.99
BenchmarkCachedPriorityModel - ns/op 170.6 ns/op 172.4 ns/op 0.99
BenchmarkCachedPriorityModel - B/op 104 B/op 104 B/op 1
BenchmarkCachedPriorityModel - allocs/op 4 allocs/op 4 allocs/op 1
BenchmarkCachedWithEnforceContext 304.4 ns/op 240 B/op 5 allocs/op 298.7 ns/op 240 B/op 5 allocs/op 1.02
BenchmarkCachedWithEnforceContext - ns/op 304.4 ns/op 298.7 ns/op 1.02
BenchmarkCachedWithEnforceContext - B/op 240 B/op 240 B/op 1
BenchmarkCachedWithEnforceContext - allocs/op 5 allocs/op 5 allocs/op 1
BenchmarkCachedRBACModelMediumParallel 176.1 ns/op 106 B/op 4 allocs/op 166.3 ns/op 106 B/op 4 allocs/op 1.06
BenchmarkCachedRBACModelMediumParallel - ns/op 176.1 ns/op 166.3 ns/op 1.06
BenchmarkCachedRBACModelMediumParallel - B/op 106 B/op 106 B/op 1
BenchmarkCachedRBACModelMediumParallel - allocs/op 4 allocs/op 4 allocs/op 1
BenchmarkHasPolicySmall 491.4 ns/op 150 B/op 6 allocs/op 531.1 ns/op 150 B/op 6 allocs/op 0.93
BenchmarkHasPolicySmall - ns/op 491.4 ns/op 531.1 ns/op 0.93
BenchmarkHasPolicySmall - B/op 150 B/op 150 B/op 1
BenchmarkHasPolicySmall - allocs/op 6 allocs/op 6 allocs/op 1
BenchmarkHasPolicyMedium 567.9 ns/op 157 B/op 6 allocs/op 588.5 ns/op 157 B/op 6 allocs/op 0.96
BenchmarkHasPolicyMedium - ns/op 567.9 ns/op 588.5 ns/op 0.96
BenchmarkHasPolicyMedium - B/op 157 B/op 157 B/op 1
BenchmarkHasPolicyMedium - allocs/op 6 allocs/op 6 allocs/op 1
BenchmarkHasPolicyLarge 595.5 ns/op 165 B/op 7 allocs/op 563.5 ns/op 165 B/op 7 allocs/op 1.06
BenchmarkHasPolicyLarge - ns/op 595.5 ns/op 563.5 ns/op 1.06
BenchmarkHasPolicyLarge - B/op 165 B/op 165 B/op 1
BenchmarkHasPolicyLarge - allocs/op 7 allocs/op 7 allocs/op 1
BenchmarkAddPolicySmall 526.9 ns/op 152 B/op 6 allocs/op 538.2 ns/op 152 B/op 6 allocs/op 0.98
BenchmarkAddPolicySmall - ns/op 526.9 ns/op 538.2 ns/op 0.98
BenchmarkAddPolicySmall - B/op 152 B/op 152 B/op 1
BenchmarkAddPolicySmall - allocs/op 6 allocs/op 6 allocs/op 1
BenchmarkAddPolicyMedium 647.1 ns/op 176 B/op 7 allocs/op 644.5 ns/op 178 B/op 7 allocs/op 1.00
BenchmarkAddPolicyMedium - ns/op 647.1 ns/op 644.5 ns/op 1.00
BenchmarkAddPolicyMedium - B/op 176 B/op 178 B/op 0.99
BenchmarkAddPolicyMedium - allocs/op 7 allocs/op 7 allocs/op 1
BenchmarkAddPolicyLarge 1126 ns/op 470 B/op 9 allocs/op 1186 ns/op 470 B/op 9 allocs/op 0.95
BenchmarkAddPolicyLarge - ns/op 1126 ns/op 1186 ns/op 0.95
BenchmarkAddPolicyLarge - B/op 470 B/op 470 B/op 1
BenchmarkAddPolicyLarge - allocs/op 9 allocs/op 9 allocs/op 1
BenchmarkRemovePolicySmall 542.9 ns/op 166 B/op 7 allocs/op 505.2 ns/op 166 B/op 7 allocs/op 1.07
BenchmarkRemovePolicySmall - ns/op 542.9 ns/op 505.2 ns/op 1.07
BenchmarkRemovePolicySmall - B/op 166 B/op 166 B/op 1
BenchmarkRemovePolicySmall - allocs/op 7 allocs/op 7 allocs/op 1
BenchmarkRemovePolicyMedium 592.6 ns/op 177 B/op 7 allocs/op 590.9 ns/op 177 B/op 7 allocs/op 1.00
BenchmarkRemovePolicyMedium - ns/op 592.6 ns/op 590.9 ns/op 1.00
BenchmarkRemovePolicyMedium - B/op 177 B/op 177 B/op 1
BenchmarkRemovePolicyMedium - allocs/op 7 allocs/op 7 allocs/op 1
BenchmarkRemovePolicyLarge 1279 ns/op 295 B/op 13 allocs/op 1347 ns/op 286 B/op 13 allocs/op 0.95
BenchmarkRemovePolicyLarge - ns/op 1279 ns/op 1347 ns/op 0.95
BenchmarkRemovePolicyLarge - B/op 295 B/op 286 B/op 1.03
BenchmarkRemovePolicyLarge - allocs/op 13 allocs/op 13 allocs/op 1
BenchmarkRaw 17.54 ns/op 0 B/op 0 allocs/op 17.53 ns/op 0 B/op 0 allocs/op 1.00
BenchmarkRaw - ns/op 17.54 ns/op 17.53 ns/op 1.00
BenchmarkRaw - B/op 0 B/op 0 B/op 1
BenchmarkRaw - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkBasicModel 3620 ns/op 1504 B/op 17 allocs/op 3620 ns/op 1509 B/op 17 allocs/op 1
BenchmarkBasicModel - ns/op 3620 ns/op 3620 ns/op 1
BenchmarkBasicModel - B/op 1504 B/op 1509 B/op 1.00
BenchmarkBasicModel - allocs/op 17 allocs/op 17 allocs/op 1
BenchmarkRBACModel 5348 ns/op 2056 B/op 35 allocs/op 5514 ns/op 2070 B/op 35 allocs/op 0.97
BenchmarkRBACModel - ns/op 5348 ns/op 5514 ns/op 0.97
BenchmarkRBACModel - B/op 2056 B/op 2070 B/op 0.99
BenchmarkRBACModel - allocs/op 35 allocs/op 35 allocs/op 1
BenchmarkRBACModelSizes/small 49114 ns/op 20157 B/op 480 allocs/op 52601 ns/op 20155 B/op 480 allocs/op 0.93
BenchmarkRBACModelSizes/small - ns/op 49114 ns/op 52601 ns/op 0.93
BenchmarkRBACModelSizes/small - B/op 20157 B/op 20155 B/op 1.00
BenchmarkRBACModelSizes/small - allocs/op 480 allocs/op 480 allocs/op 1
BenchmarkRBACModelSizes/medium 495157 ns/op 191647 B/op 4828 allocs/op 542076 ns/op 191724 B/op 4827 allocs/op 0.91
BenchmarkRBACModelSizes/medium - ns/op 495157 ns/op 542076 ns/op 0.91
BenchmarkRBACModelSizes/medium - B/op 191647 B/op 191724 B/op 1.00
BenchmarkRBACModelSizes/medium - allocs/op 4828 allocs/op 4827 allocs/op 1.00
BenchmarkRBACModelSizes/large 5150973 ns/op 1906223 B/op 48353 allocs/op 5641269 ns/op 1899745 B/op 48170 allocs/op 0.91
BenchmarkRBACModelSizes/large - ns/op 5150973 ns/op 5641269 ns/op 0.91
BenchmarkRBACModelSizes/large - B/op 1906223 B/op 1899745 B/op 1.00
BenchmarkRBACModelSizes/large - allocs/op 48353 allocs/op 48170 allocs/op 1.00
BenchmarkRBACModelSmall 59732 ns/op 20172 B/op 615 allocs/op 63994 ns/op 20291 B/op 615 allocs/op 0.93
BenchmarkRBACModelSmall - ns/op 59732 ns/op 63994 ns/op 0.93
BenchmarkRBACModelSmall - B/op 20172 B/op 20291 B/op 0.99
BenchmarkRBACModelSmall - allocs/op 615 allocs/op 615 allocs/op 1
BenchmarkRBACModelMedium 561631 ns/op 194653 B/op 6020 allocs/op 571823 ns/op 194246 B/op 6021 allocs/op 0.98
BenchmarkRBACModelMedium - ns/op 561631 ns/op 571823 ns/op 0.98
BenchmarkRBACModelMedium - B/op 194653 B/op 194246 B/op 1.00
BenchmarkRBACModelMedium - allocs/op 6020 allocs/op 6021 allocs/op 1.00
BenchmarkRBACModelLarge 6007372 ns/op 1940593 B/op 60598 allocs/op 6022236 ns/op 1941549 B/op 60660 allocs/op 1.00
BenchmarkRBACModelLarge - ns/op 6007372 ns/op 6022236 ns/op 1.00
BenchmarkRBACModelLarge - B/op 1940593 B/op 1941549 B/op 1.00
BenchmarkRBACModelLarge - allocs/op 60598 allocs/op 60660 allocs/op 1.00
BenchmarkRBACModelWithResourceRoles 5153 ns/op 2725 B/op 28 allocs/op 5272 ns/op 2727 B/op 28 allocs/op 0.98
BenchmarkRBACModelWithResourceRoles - ns/op 5153 ns/op 5272 ns/op 0.98
BenchmarkRBACModelWithResourceRoles - B/op 2725 B/op 2727 B/op 1.00
BenchmarkRBACModelWithResourceRoles - allocs/op 28 allocs/op 28 allocs/op 1
BenchmarkRBACModelWithDomains 5019 ns/op 1821 B/op 25 allocs/op 5110 ns/op 1824 B/op 25 allocs/op 0.98
BenchmarkRBACModelWithDomains - ns/op 5019 ns/op 5110 ns/op 0.98
BenchmarkRBACModelWithDomains - B/op 1821 B/op 1824 B/op 1.00
BenchmarkRBACModelWithDomains - allocs/op 25 allocs/op 25 allocs/op 1
BenchmarkABACModel 2762 ns/op 1528 B/op 17 allocs/op 2807 ns/op 1532 B/op 17 allocs/op 0.98
BenchmarkABACModel - ns/op 2762 ns/op 2807 ns/op 0.98
BenchmarkABACModel - B/op 1528 B/op 1532 B/op 1.00
BenchmarkABACModel - allocs/op 17 allocs/op 17 allocs/op 1
BenchmarkABACRuleModel 3889125 ns/op 1319010 B/op 40090 allocs/op 3924947 ns/op 1322742 B/op 40091 allocs/op 0.99
BenchmarkABACRuleModel - ns/op 3889125 ns/op 3924947 ns/op 0.99
BenchmarkABACRuleModel - B/op 1319010 B/op 1322742 B/op 1.00
BenchmarkABACRuleModel - allocs/op 40090 allocs/op 40091 allocs/op 1.00
BenchmarkKeyMatchModel 5960 ns/op 3056 B/op 37 allocs/op 6074 ns/op 3061 B/op 37 allocs/op 0.98
BenchmarkKeyMatchModel - ns/op 5960 ns/op 6074 ns/op 0.98
BenchmarkKeyMatchModel - B/op 3056 B/op 3061 B/op 1.00
BenchmarkKeyMatchModel - allocs/op 37 allocs/op 37 allocs/op 1
BenchmarkRBACModelWithDeny 6803 ns/op 2474 B/op 49 allocs/op 6900 ns/op 2475 B/op 49 allocs/op 0.99
BenchmarkRBACModelWithDeny - ns/op 6803 ns/op 6900 ns/op 0.99
BenchmarkRBACModelWithDeny - B/op 2474 B/op 2475 B/op 1.00
BenchmarkRBACModelWithDeny - allocs/op 49 allocs/op 49 allocs/op 1
BenchmarkPriorityModel 4161 ns/op 1757 B/op 22 allocs/op 4264 ns/op 1758 B/op 22 allocs/op 0.98
BenchmarkPriorityModel - ns/op 4161 ns/op 4264 ns/op 0.98
BenchmarkPriorityModel - B/op 1757 B/op 1758 B/op 1.00
BenchmarkPriorityModel - allocs/op 22 allocs/op 22 allocs/op 1
BenchmarkRBACModelWithDomainPatternLarge 22762 ns/op 16725 B/op 164 allocs/op 24258 ns/op 16725 B/op 164 allocs/op 0.94
BenchmarkRBACModelWithDomainPatternLarge - ns/op 22762 ns/op 24258 ns/op 0.94
BenchmarkRBACModelWithDomainPatternLarge - B/op 16725 B/op 16725 B/op 1
BenchmarkRBACModelWithDomainPatternLarge - allocs/op 164 allocs/op 164 allocs/op 1
BenchmarkRoleManagerSmall 68918 ns/op 11954 B/op 797 allocs/op 72457 ns/op 11955 B/op 797 allocs/op 0.95
BenchmarkRoleManagerSmall - ns/op 68918 ns/op 72457 ns/op 0.95
BenchmarkRoleManagerSmall - B/op 11954 B/op 11955 B/op 1.00
BenchmarkRoleManagerSmall - allocs/op 797 allocs/op 797 allocs/op 1
BenchmarkRoleManagerMedium 725375 ns/op 125914 B/op 8741 allocs/op 731324 ns/op 125914 B/op 8741 allocs/op 0.99
BenchmarkRoleManagerMedium - ns/op 725375 ns/op 731324 ns/op 0.99
BenchmarkRoleManagerMedium - B/op 125914 B/op 125914 B/op 1
BenchmarkRoleManagerMedium - allocs/op 8741 allocs/op 8741 allocs/op 1
BenchmarkRoleManagerLarge 7624543 ns/op 1349922 B/op 89741 allocs/op 8233351 ns/op 1349925 B/op 89741 allocs/op 0.93
BenchmarkRoleManagerLarge - ns/op 7624543 ns/op 8233351 ns/op 0.93
BenchmarkRoleManagerLarge - B/op 1349922 B/op 1349925 B/op 1.00
BenchmarkRoleManagerLarge - allocs/op 89741 allocs/op 89741 allocs/op 1
BenchmarkBuildRoleLinksWithPatternLarge 5905623189 ns/op 5318694536 B/op 60943128 allocs/op 6206621355 ns/op 5343071792 B/op 60948569 allocs/op 0.95
BenchmarkBuildRoleLinksWithPatternLarge - ns/op 5905623189 ns/op 6206621355 ns/op 0.95
BenchmarkBuildRoleLinksWithPatternLarge - B/op 5318694536 B/op 5343071792 B/op 1.00
BenchmarkBuildRoleLinksWithPatternLarge - allocs/op 60943128 allocs/op 60948569 allocs/op 1.00
BenchmarkBuildRoleLinksWithDomainPatternLarge 163510188 ns/op 140879097 B/op 1676339 allocs/op 168311104 ns/op 141535321 B/op 1676485 allocs/op 0.97
BenchmarkBuildRoleLinksWithDomainPatternLarge - ns/op 163510188 ns/op 168311104 ns/op 0.97
BenchmarkBuildRoleLinksWithDomainPatternLarge - B/op 140879097 B/op 141535321 B/op 1.00
BenchmarkBuildRoleLinksWithDomainPatternLarge - allocs/op 1676339 allocs/op 1676485 allocs/op 1.00
BenchmarkBuildRoleLinksWithPatternAndDomainPatternLarge 6104538856 ns/op 5456735352 B/op 62553863 allocs/op 6397425812 ns/op 5485469712 B/op 62560148 allocs/op 0.95
BenchmarkBuildRoleLinksWithPatternAndDomainPatternLarge - ns/op 6104538856 ns/op 6397425812 ns/op 0.95
BenchmarkBuildRoleLinksWithPatternAndDomainPatternLarge - B/op 5456735352 B/op 5485469712 B/op 0.99
BenchmarkBuildRoleLinksWithPatternAndDomainPatternLarge - allocs/op 62553863 allocs/op 62560148 allocs/op 1.00
BenchmarkHasLinkWithPatternLarge 10221 ns/op 7579 B/op 111 allocs/op 11270 ns/op 7607 B/op 111 allocs/op 0.91
BenchmarkHasLinkWithPatternLarge - ns/op 10221 ns/op 11270 ns/op 0.91
BenchmarkHasLinkWithPatternLarge - B/op 7579 B/op 7607 B/op 1.00
BenchmarkHasLinkWithPatternLarge - allocs/op 111 allocs/op 111 allocs/op 1
BenchmarkHasLinkWithDomainPatternLarge 470.4 ns/op 80 B/op 5 allocs/op 473.9 ns/op 80 B/op 5 allocs/op 0.99
BenchmarkHasLinkWithDomainPatternLarge - ns/op 470.4 ns/op 473.9 ns/op 0.99
BenchmarkHasLinkWithDomainPatternLarge - B/op 80 B/op 80 B/op 1
BenchmarkHasLinkWithDomainPatternLarge - allocs/op 5 allocs/op 5 allocs/op 1
BenchmarkHasLinkWithPatternAndDomainPatternLarge 10264 ns/op 7597 B/op 111 allocs/op 10531 ns/op 7612 B/op 111 allocs/op 0.97
BenchmarkHasLinkWithPatternAndDomainPatternLarge - ns/op 10264 ns/op 10531 ns/op 0.97
BenchmarkHasLinkWithPatternAndDomainPatternLarge - B/op 7597 B/op 7612 B/op 1.00
BenchmarkHasLinkWithPatternAndDomainPatternLarge - allocs/op 111 allocs/op 111 allocs/op 1

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.