summaryrefslogtreecommitdiffstats
path: root/config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-09-23 21:04:16 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2020-09-23 21:04:16 +0000
commit08ace27cf15655e6b9b3df61a217611297d05e57 (patch)
tree4b637ef6411bd92c19febd57af3335df55dff238 /config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java
parent29d266ae1e5c95e25002b97822953fdd02b1451e (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.java32
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 */