From 795acce15158be694bbc8a580ff2feda4cf0b555 Mon Sep 17 00:00:00 2001 From: Alissa Bonas Date: Wed, 25 Dec 2013 19:23:33 +0200 Subject: [PATCH] Optimization - calculate the subnet prefix only once. Before this change, subnet prefix was calculated on every 'isSubnetOf' call. Since the prefix is not changing unless the subnet address itself changed, it's sufficient to do it only once and keep it as part of the Subnet object. Marked it as transient so it will not be serialized - it can be calculated from the rest of the info of Subnet anytime after deserialization. Change-Id: Ie16bf80713820b566864bea0ff46298c93cc2d47 Signed-off-by: Alissa Bonas --- .../org/opendaylight/controller/switchmanager/Subnet.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/Subnet.java b/opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/Subnet.java index 56df8e26bd..2794109c24 100644 --- a/opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/Subnet.java +++ b/opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/Subnet.java @@ -25,6 +25,7 @@ public class Subnet implements Cloneable, Serializable { private static final long serialVersionUID = 1L; // Key fields private InetAddress networkAddress; + private transient InetAddress subnetPrefix; private short subnetMaskLength; // Property fields private short vlan; @@ -114,6 +115,7 @@ public class Subnet implements Cloneable, Serializable { */ public Subnet setNetworkAddress(InetAddress networkAddress) { this.networkAddress = networkAddress; + this.subnetPrefix = null; return this; } @@ -159,10 +161,12 @@ public class Subnet implements Cloneable, Serializable { if (ip == null) { return false; } - InetAddress thisPrefix = getPrefixForAddress(this.networkAddress); + if(subnetPrefix == null) { + subnetPrefix = getPrefixForAddress(this.networkAddress); + } InetAddress otherPrefix = getPrefixForAddress(ip); boolean isSubnetOf = true; - if (((thisPrefix == null) || (otherPrefix == null)) || (!thisPrefix.equals(otherPrefix)) ) { + if (((subnetPrefix == null) || (otherPrefix == null)) || (!subnetPrefix.equals(otherPrefix)) ) { isSubnetOf = false; } return isSubnetOf; -- 2.36.6