From 12bd26efc34391aedfa4f2a45428e558a414f755 Mon Sep 17 00:00:00 2001 From: Lars Johansson <lars.johansson@ess.eu> Date: Wed, 30 Nov 2022 10:15:05 +0100 Subject: [PATCH] Tweak HashMap handling and hash code functions for better performance --- .../names/repository/model/DeviceGroup.java | 8 +------- .../names/repository/model/DeviceType.java | 8 +------- .../names/repository/model/Discipline.java | 3 ++- .../org/openepics/names/repository/model/Name.java | 8 +------- .../names/repository/model/NameStructure.java | 6 +----- .../names/repository/model/Persistable.java | 2 +- .../openepics/names/repository/model/Structure.java | 7 +------ .../openepics/names/repository/model/Subsystem.java | 8 +------- .../openepics/names/repository/model/System.java | 8 +------- .../names/repository/model/SystemGroup.java | 3 ++- .../names/util/HolderSystemDeviceStructure.java | 13 +++++++------ 11 files changed, 19 insertions(+), 55 deletions(-) diff --git a/src/main/java/org/openepics/names/repository/model/DeviceGroup.java b/src/main/java/org/openepics/names/repository/model/DeviceGroup.java index 0fb5feb9..8bf563ef 100644 --- a/src/main/java/org/openepics/names/repository/model/DeviceGroup.java +++ b/src/main/java/org/openepics/names/repository/model/DeviceGroup.java @@ -127,13 +127,7 @@ public class DeviceGroup extends Structure { @Override public int hashCode() { - return Objects.hash( - getId(), getVersion(), - getUuid(), getDescription(), getStatus(), isLatest(), isDeleted(), - getRequested(), getRequestedBy(), getRequestedComment(), - getProcessed(), getProcessedBy(), getProcessedComment(), - getName(), getMnemonic(), getMnemonicEquivalence(), - getParentUuid()); + return Objects.hash(getId(), getUuid()); } @Override diff --git a/src/main/java/org/openepics/names/repository/model/DeviceType.java b/src/main/java/org/openepics/names/repository/model/DeviceType.java index 8c58a263..af7c9335 100644 --- a/src/main/java/org/openepics/names/repository/model/DeviceType.java +++ b/src/main/java/org/openepics/names/repository/model/DeviceType.java @@ -127,13 +127,7 @@ public class DeviceType extends Structure { @Override public int hashCode() { - return Objects.hash( - getId(), getVersion(), - getUuid(), getDescription(), getStatus(), isLatest(), isDeleted(), - getRequested(), getRequestedBy(), getRequestedComment(), - getProcessed(), getProcessedBy(), getProcessedComment(), - getName(), getMnemonic(), getMnemonicEquivalence(), - getParentUuid()); + return Objects.hash(getId(), getUuid()); } @Override diff --git a/src/main/java/org/openepics/names/repository/model/Discipline.java b/src/main/java/org/openepics/names/repository/model/Discipline.java index 10601435..afa4b3c3 100644 --- a/src/main/java/org/openepics/names/repository/model/Discipline.java +++ b/src/main/java/org/openepics/names/repository/model/Discipline.java @@ -19,6 +19,7 @@ package org.openepics.names.repository.model; import java.util.Date; +import java.util.Objects; import java.util.UUID; import javax.persistence.Entity; @@ -103,7 +104,7 @@ public class Discipline extends Structure { @Override public int hashCode() { - return super.hashCode(); + return Objects.hash(getId(), getUuid()); } @Override diff --git a/src/main/java/org/openepics/names/repository/model/Name.java b/src/main/java/org/openepics/names/repository/model/Name.java index 32ed6c29..4462a5fe 100644 --- a/src/main/java/org/openepics/names/repository/model/Name.java +++ b/src/main/java/org/openepics/names/repository/model/Name.java @@ -224,13 +224,7 @@ public class Name extends NameStructure implements Serializable { @Override public int hashCode() { - return Objects.hash( - getId(), getVersion(), - getUuid(), getDescription(), getStatus(), isLatest(), isDeleted(), - getRequested(), getRequestedBy(), getRequestedComment(), - getProcessed(), getProcessedBy(), getProcessedComment(), - getSystemgroupUuid(), getSystemUuid(), getSubsystemUuid(), getDevicetypeUuid(), getInstanceIndex(), - getConventionName(), getConventionNameEquivalence()); + return Objects.hash(getId(), getUuid()); } @Override diff --git a/src/main/java/org/openepics/names/repository/model/NameStructure.java b/src/main/java/org/openepics/names/repository/model/NameStructure.java index c1c6a391..d521a753 100644 --- a/src/main/java/org/openepics/names/repository/model/NameStructure.java +++ b/src/main/java/org/openepics/names/repository/model/NameStructure.java @@ -232,11 +232,7 @@ public class NameStructure extends Persistable implements Serializable { @Override public int hashCode() { - return Objects.hash( - getId(), getVersion(), - getUuid(), getDescription(), getStatus(), isLatest(), isDeleted(), - getRequested(), getRequestedBy(), getRequestedComment(), - getProcessed(), getProcessedBy(), getProcessedComment()); + return Objects.hash(getId(), getUuid()); } } diff --git a/src/main/java/org/openepics/names/repository/model/Persistable.java b/src/main/java/org/openepics/names/repository/model/Persistable.java index d10763ed..bd8c2233 100644 --- a/src/main/java/org/openepics/names/repository/model/Persistable.java +++ b/src/main/java/org/openepics/names/repository/model/Persistable.java @@ -88,7 +88,7 @@ public class Persistable implements Serializable { @Override public int hashCode() { - return Objects.hash(getId(), getVersion()); + return Objects.hash(getId()); } } diff --git a/src/main/java/org/openepics/names/repository/model/Structure.java b/src/main/java/org/openepics/names/repository/model/Structure.java index 1d63b6b6..4be69803 100644 --- a/src/main/java/org/openepics/names/repository/model/Structure.java +++ b/src/main/java/org/openepics/names/repository/model/Structure.java @@ -171,12 +171,7 @@ public class Structure extends NameStructure implements Serializable { @Override public int hashCode() { - return Objects.hash( - getId(), getVersion(), - getUuid(), getDescription(), getStatus(), isLatest(), isDeleted(), - getRequested(), getRequestedBy(), getRequestedComment(), - getProcessed(), getProcessedBy(), getProcessedComment(), - getName(), getMnemonic(), getMnemonicEquivalence()); + return Objects.hash(getId(), getUuid()); } } diff --git a/src/main/java/org/openepics/names/repository/model/Subsystem.java b/src/main/java/org/openepics/names/repository/model/Subsystem.java index f0d526a7..f2dc8896 100644 --- a/src/main/java/org/openepics/names/repository/model/Subsystem.java +++ b/src/main/java/org/openepics/names/repository/model/Subsystem.java @@ -127,13 +127,7 @@ public class Subsystem extends Structure { @Override public int hashCode() { - return Objects.hash( - getId(), getVersion(), - getUuid(), getDescription(), getStatus(), isLatest(), isDeleted(), - getRequested(), getRequestedBy(), getRequestedComment(), - getProcessed(), getProcessedBy(), getProcessedComment(), - getName(), getMnemonic(), getMnemonicEquivalence(), - getParentUuid()); + return Objects.hash(getId(), getUuid()); } @Override diff --git a/src/main/java/org/openepics/names/repository/model/System.java b/src/main/java/org/openepics/names/repository/model/System.java index b2296ac5..bec3396d 100644 --- a/src/main/java/org/openepics/names/repository/model/System.java +++ b/src/main/java/org/openepics/names/repository/model/System.java @@ -127,13 +127,7 @@ public class System extends Structure { @Override public int hashCode() { - return Objects.hash( - getId(), getVersion(), - getUuid(), getDescription(), getStatus(), isLatest(), isDeleted(), - getRequested(), getRequestedBy(), getRequestedComment(), - getProcessed(), getProcessedBy(), getProcessedComment(), - getName(), getMnemonic(), getMnemonicEquivalence(), - getParentUuid()); + return Objects.hash(getId(), getUuid()); } @Override diff --git a/src/main/java/org/openepics/names/repository/model/SystemGroup.java b/src/main/java/org/openepics/names/repository/model/SystemGroup.java index 4109cc03..38007815 100644 --- a/src/main/java/org/openepics/names/repository/model/SystemGroup.java +++ b/src/main/java/org/openepics/names/repository/model/SystemGroup.java @@ -19,6 +19,7 @@ package org.openepics.names.repository.model; import java.util.Date; +import java.util.Objects; import java.util.UUID; import javax.persistence.Entity; @@ -103,7 +104,7 @@ public class SystemGroup extends Structure { @Override public int hashCode() { - return super.hashCode(); + return Objects.hash(getId(), getUuid()); } @Override diff --git a/src/main/java/org/openepics/names/util/HolderSystemDeviceStructure.java b/src/main/java/org/openepics/names/util/HolderSystemDeviceStructure.java index 3c7eff65..e8dbaa02 100644 --- a/src/main/java/org/openepics/names/util/HolderSystemDeviceStructure.java +++ b/src/main/java/org/openepics/names/util/HolderSystemDeviceStructure.java @@ -94,12 +94,13 @@ public class HolderSystemDeviceStructure { // default load factor 0.75 // set at proper size to avoid rehashing // size/0.75+1 (may be rounded downwards so possibly +2 instead) - this.systemGroups = new HashMap<>((int)(systemGroupsRead.size()/0.75 + 2)); - this.systems = new HashMap<>((int)(systemsRead.size()/0.75 + 2)); - this.subsystems = new HashMap<>((int)(subsystemsRead.size()/0.75 + 2)); - this.disciplines = new HashMap<>((int)(disciplinesRead.size()/0.75 + 2)); - this.deviceGroups = new HashMap<>((int)(deviceGroupsRead.size()/0.75 + 2)); - this.deviceTypes = new HashMap<>((int)(deviceTypesRead.size()/0.75 + 2)); + float loadFactor = 0.75f; + this.systemGroups = new HashMap<>((int)(systemGroupsRead.size()/loadFactor + 2), loadFactor); + this.systems = new HashMap<>((int)(systemsRead.size()/loadFactor + 2), loadFactor); + this.subsystems = new HashMap<>((int)(subsystemsRead.size()/loadFactor + 2), loadFactor); + this.disciplines = new HashMap<>((int)(disciplinesRead.size()/loadFactor + 2), loadFactor); + this.deviceGroups = new HashMap<>((int)(deviceGroupsRead.size()/loadFactor + 2), loadFactor); + this.deviceTypes = new HashMap<>((int)(deviceTypesRead.size()/loadFactor + 2), loadFactor); for (SystemGroup systemGroup : systemGroupsRead) { this.systemGroups.put(systemGroup.getUuid(), systemGroup); -- GitLab