diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2020-09-23 21:04:16 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2020-09-23 21:04:16 +0000 |
commit | 08ace27cf15655e6b9b3df61a217611297d05e57 (patch) | |
tree | 4b637ef6411bd92c19febd57af3335df55dff238 /config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java | |
parent | 29d266ae1e5c95e25002b97822953fdd02b1451e (diff) |
Since only a simple single decimal floatingpoint number is needed avoid using string and floating point formatting. Use a simpler variant you get a 15 X speedup of this frequently called code.
Diffstat (limited to 'config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java')
-rw-r--r-- | config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java b/config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java index 9cae0a08360..e5c2bf658ab 100644 --- a/config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java +++ b/config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java @@ -1,6 +1,9 @@ // Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.config.provision; +import java.text.DecimalFormat; +import java.text.FieldPosition; +import java.text.NumberFormat; import java.util.Locale; import java.util.Objects; import java.util.Optional; @@ -215,13 +218,32 @@ public class NodeResources { return Objects.hash(vcpu, memoryGb, diskGb, bandwidthGbps, diskSpeed, storageType); } + private static StringBuffer appendDouble(StringBuffer sb, double d) { + sb.append((long)d).append('.').append(Math.round(d*10)%10); + return sb; + } @Override public String toString() { - return String.format(Locale.ENGLISH, "[vcpu: %1$.1f, memory: %2$.1f Gb, disk %3$.1f Gb" + - (bandwidthGbps > 0 ? ", bandwidth: %4$.1f Gbps" : "") + - ( ! diskSpeed.isDefault() ? ", disk speed: " + diskSpeed : "") + - ( ! storageType.isDefault() ? ", storage type: " + storageType : "") + "]", - vcpu, memoryGb, diskGb, bandwidthGbps); + StringBuffer sb = new StringBuffer("[vcpu: "); + appendDouble(sb, vcpu); + sb.append(", memory: "); + appendDouble(sb, memoryGb); + sb.append(" Gb, disk "); + appendDouble(sb, diskGb); + sb.append(" Gb"); + if (bandwidthGbps > 0) { + sb.append(", bandwidth: "); + appendDouble(sb, bandwidthGbps); + sb.append(" Gbps"); + } + if ( !diskSpeed.isDefault()) { + sb.append(", disk speed: ").append(diskSpeed); + } + if ( !storageType.isDefault()) { + sb.append(", storage type: ").append(storageType); + } + sb.append(']'); + return sb.toString(); } /** Returns true if all the resources of this are the same or larger than the given resources */ |