Performance improvement in deserialization of EncodableDiscreteResources
Over 1500x faster. This is for ONOS-4698
Before this patch
Benchmark Mode Cnt Score Error Units
VlanSetSerialize.deserialize_compact_vlans avgt 200 1681.625 ± 8.937 us/op
VlanSetSerialize.serialize_compact_vlans avgt 200 1.532 ± 0.017 us/op
After this patch
Benchmark Mode Cnt Score Error Units
VlanSetSerialize.deserialize_compact_vlans avgt 200 1.070 ± 0.012 us/op
VlanSetSerialize.serialize_compact_vlans avgt 200 1.613 ± 0.014 us/op
Change-Id: I2f00f7fbf25ee36555751e0bcff95d06b701f8c8
diff --git a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodedDiscreteResources.java b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodedDiscreteResources.java
index d02e91c..e5bf85a 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodedDiscreteResources.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodedDiscreteResources.java
@@ -76,6 +76,11 @@
.collect(Collectors.toCollection(LinkedHashSet::new));
}
+ Class<?> encodedClass() {
+ Range<Integer> firstRange = rangeSet.asRanges().iterator().next();
+ return codec.decode(firstRange.lowerEndpoint()).getClass();
+ }
+
@SuppressWarnings("unchecked")
boolean contains(DiscreteResource resource) {
return resource.valueAs(Object.class)