Improvements to hashing and hash set/map sizing

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@5079 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Andrew Hind
2007-02-08 14:21:07 +00:00
parent 268a821142
commit f84f6b9de3
4 changed files with 19 additions and 16 deletions

View File

@@ -53,7 +53,7 @@ public abstract class AbstractPermissionReference implements PermissionReference
{
if (hashcode == 0)
{
hashcode = getQName().hashCode() * 37 + getName().hashCode();
hashcode = (getName().hashCode() * 1000003) + getQName().hashCode();
}
return hashcode;
}

View File

@@ -66,7 +66,7 @@ public final class PermissionGroup extends AbstractPermissionReference implement
private QName container;
private Set<PermissionReference> includedPermissionGroups = new HashSet<PermissionReference>();
private Set<PermissionReference> includedPermissionGroups = new HashSet<PermissionReference>(4, 1.0f);
private boolean requiresType;

View File

@@ -87,20 +87,23 @@ public class PermissionModel implements ModelDAO, InitializingBean
private String model;
// Aprrox 6 - default size OK
private Map<QName, PermissionSet> permissionSets = new HashMap<QName, PermissionSet>();
// Global permissions - default size OK
private Set<GlobalPermissionEntry> globalPermissions = new HashSet<GlobalPermissionEntry>();
private AccessStatus defaultPermission;
// Cache granting permissions
private HashMap<PermissionReference, Set<PermissionReference>> grantingPermissions = new HashMap<PermissionReference, Set<PermissionReference>>();
private HashMap<PermissionReference, Set<PermissionReference>> grantingPermissions = new HashMap<PermissionReference, Set<PermissionReference>>(128, 1.0f);
// Cache grantees
private HashMap<PermissionReference, Set<PermissionReference>> granteePermissions = new HashMap<PermissionReference, Set<PermissionReference>>();
private HashMap<PermissionReference, Set<PermissionReference>> granteePermissions = new HashMap<PermissionReference, Set<PermissionReference>>(128, 1.0f);
// Cache the mapping of extended groups to the base
private HashMap<PermissionGroup, PermissionGroup> groupsToBaseGroup = new HashMap<PermissionGroup, PermissionGroup>();
private HashMap<PermissionGroup, PermissionGroup> groupsToBaseGroup = new HashMap<PermissionGroup, PermissionGroup>(128, 1.0f);
private HashMap<String, PermissionReference> uniqueMap;
@@ -291,7 +294,7 @@ public class PermissionModel implements ModelDAO, InitializingBean
LinkedHashSet<PermissionReference> permissions = cache.get(type);
if (permissions == null)
{
permissions = new LinkedHashSet<PermissionReference>();
permissions = new LinkedHashSet<PermissionReference>(128, 1.0f);
ClassDefinition cd = dictionaryService.getClass(type);
if (cd != null)
{
@@ -467,7 +470,7 @@ public class PermissionModel implements ModelDAO, InitializingBean
private Set<PermissionReference> getGrantingPermissionsImpl(PermissionReference permissionReference)
{
// Query the model
HashSet<PermissionReference> permissions = new HashSet<PermissionReference>();
HashSet<PermissionReference> permissions = new HashSet<PermissionReference>(128, 1.0f);
permissions.add(permissionReference);
for (PermissionSet ps : permissionSets.values())
{
@@ -539,7 +542,7 @@ public class PermissionModel implements ModelDAO, InitializingBean
private Set<PermissionReference> getGranteePermissionsImpl(PermissionReference permissionReference)
{
// Query the model
HashSet<PermissionReference> permissions = new HashSet<PermissionReference>();
HashSet<PermissionReference> permissions = new HashSet<PermissionReference>(128, 1.0f);
permissions.add(permissionReference);
for (PermissionSet ps : permissionSets.values())
{
@@ -604,7 +607,7 @@ public class PermissionModel implements ModelDAO, InitializingBean
private Set<PermissionReference> getAllPermissions()
{
HashSet<PermissionReference> permissions = new HashSet<PermissionReference>();
HashSet<PermissionReference> permissions = new HashSet<PermissionReference>(128, 1.0f);
for (PermissionSet ps : permissionSets.values())
{
for (PermissionGroup pg : ps.getPermissionGroups())
@@ -914,11 +917,11 @@ public class PermissionModel implements ModelDAO, InitializingBean
private void buildUniquePermissionMap()
{
Set<String> excluded = new HashSet<String>();
uniqueMap = new HashMap<String, PermissionReference>();
permissionReferenceMap = new HashMap<String, PermissionReference>();
permissionGroupMap = new HashMap<PermissionReference, PermissionGroup>();
permissionMap = new HashMap<PermissionReference, Permission>();
Set<String> excluded = new HashSet<String>(64, 1.0f);
uniqueMap = new HashMap<String, PermissionReference>(128, 1.0f);
permissionReferenceMap = new HashMap<String, PermissionReference>(128, 1.0f);
permissionGroupMap = new HashMap<PermissionReference, PermissionGroup>(64, 1.0f);
permissionMap = new HashMap<PermissionReference, Permission>(32, 1.0f);
for (PermissionSet ps : permissionSets.values())
{
for (PermissionGroup pg : ps.getPermissionGroups())

View File

@@ -45,9 +45,9 @@ public final class PermissionSet implements XMLModelInitialisable
private boolean exposeAll;
private Set<PermissionGroup> permissionGroups = new LinkedHashSet<PermissionGroup>();
private Set<PermissionGroup> permissionGroups = new LinkedHashSet<PermissionGroup>(32, 1.0f);
private Set<Permission> permissions = new HashSet<Permission>();
private Set<Permission> permissions = new HashSet<Permission>(32, 1.0f);
public PermissionSet()
{