/** * Format the {@literal size} bytes as a String. */ public String makeSizeString(long size) { return makeSizeString(size, precision); }
/** * A {@link Function} implementation that formats its input using the current {@link ByteSizeStrings} values. */ @Override @Nullable public String apply(@Nullable Long input) { if (input == null) return null; return makeSizeString(input); }
@Override public void formatTo(Formatter formatter, int flags, int width, int precision) { boolean alternate = (flags & FormattableFlags.ALTERNATE) == FormattableFlags.ALTERNATE; ByteSizeStrings strings = alternate ? ByteSizeStrings.metric() : ByteSizeStrings.this; if (precision != -1) { formatter.format("%s", strings.makeSizeString(bytes, precision)); } else { formatter.format("%s", strings.makeSizeString(bytes)); } } };
/** Returns a size string using ISO suffixes from {@link ByteSizeStrings#iso()}, e.g. 23.5MiB */ public static String makeISOSizeString(long sizeInBytes) { return ByteSizeStrings.iso().makeSizeString(sizeInBytes); }
/** Returns a size string using metric suffixes from {@link ByteSizeStrings#metric()}, e.g. 23.5MB */ public static String makeSizeString(long sizeInBytes) { return ByteSizeStrings.metric().makeSizeString(sizeInBytes); }
/** Returns a size string using Java suffixes from {@link ByteSizeStrings#java()}, e.g. 23m */ public static String makeJavaSizeString(long sizeInBytes) { return ByteSizeStrings.java().makeSizeString(sizeInBytes); }
public void testJavaSizeString() { assertEquals(ByteSizeStrings.java().makeSizeString(-1), "-1"); assertEquals(ByteSizeStrings.java().makeSizeString(0), "0"); assertEquals(ByteSizeStrings.java().makeSizeString(999), "999"); assertEquals(ByteSizeStrings.java().makeSizeString(1024), "1024"); assertEquals(ByteSizeStrings.java().makeSizeString(1234), "1234"); assertEquals(ByteSizeStrings.java().makeSizeString(2345), "2345"); assertEquals(ByteSizeStrings.java().makeSizeString(4096), "4096"); assertEquals(ByteSizeStrings.java().makeSizeString(4567), "4567"); assertEquals(ByteSizeStrings.java().makeSizeString(6789), "6789"); assertEquals(ByteSizeStrings.java().makeSizeString(65535), "64k"); assertEquals(ByteSizeStrings.java().makeSizeString(23456789L), "22m"); assertEquals(ByteSizeStrings.java().makeSizeString(23456789012L), "22g"); assertEquals(ByteSizeStrings.java().makeSizeString(23456789012345L), "21000g"); assertEquals(ByteSizeStrings.java().makeSizeString(Long.MAX_VALUE), "8388608000g"); }
public void testISOSizeString() { assertEquals(ByteSizeStrings.iso().makeSizeString(-1), "-1 B"); assertEquals(ByteSizeStrings.iso().makeSizeString(0), "0 B"); assertEquals(ByteSizeStrings.iso().makeSizeString(999), "999 B"); assertEquals(ByteSizeStrings.iso().makeSizeString(1024), "1024 B"); assertEquals(ByteSizeStrings.iso().makeSizeString(1234), "1234 B"); assertEquals(ByteSizeStrings.iso().makeSizeString(2345), "2.29 KiB"); assertEquals(ByteSizeStrings.iso().makeSizeString(4096), "4 KiB"); assertEquals(ByteSizeStrings.iso().makeSizeString(4567), "4.46 KiB"); assertEquals(ByteSizeStrings.iso().makeSizeString(6789), "6.63 KiB"); assertEquals(ByteSizeStrings.iso().makeSizeString(65535), "64.0 KiB"); assertEquals(ByteSizeStrings.iso().makeSizeString(23456789L), "22.4 MiB"); assertEquals(ByteSizeStrings.iso().makeSizeString(23456789012L), "21.8 GiB"); assertEquals(ByteSizeStrings.iso().makeSizeString(23456789012345L), "21.3 TiB"); assertEquals(ByteSizeStrings.iso().makeSizeString(Long.MAX_VALUE), "8388608 TiB"); }
public void testBuilder() { ByteSizeStrings strings = ByteSizeStrings.builder() .bytesPerMetricUnit(1024) .precision(4) .lowerLimit(5) .maxLen(4) .suffixBytes("b") .suffixKilo("kb") .suffixMega("Mb") .suffixGiga("Gb") .suffixTera("Tb") .addSpace() .build(); assertEquals(strings.makeSizeString(-1), "-1 b"); assertEquals(strings.makeSizeString(0), "0 b"); assertEquals(strings.makeSizeString(999), "999 b"); assertEquals(strings.makeSizeString(1024), "1024 b"); assertEquals(strings.makeSizeString(1234), "1234 b"); assertEquals(strings.makeSizeString(2345), "2345 b"); assertEquals(strings.makeSizeString(4096), "4096 b"); assertEquals(strings.makeSizeString(4567), "4567 b"); assertEquals(strings.makeSizeString(6789), "6.630 kb"); assertEquals(strings.makeSizeString(65535), "64.00 kb"); assertEquals(strings.makeSizeString(23456789L), "22.37 Mb"); assertEquals(strings.makeSizeString(23456789012L), "21.85 Gb"); assertEquals(strings.makeSizeString(23456789012345L), "21.33 Tb"); assertEquals(strings.makeSizeString(Long.MAX_VALUE), "8388608 Tb"); }
/** * Format the {@literal size} bytes as a String with the given precision. */ public String makeSizeString(long size, int precision) { long t = size; if (t==0) return "0"+suffixBytes; if (t<0) return "-"+makeSizeString(-t); long b = t%bytesPerMetricUnit; t = t/bytesPerMetricUnit; long kb = t%bytesPerMetricUnit; t = t/bytesPerMetricUnit; long mb = t%bytesPerMetricUnit; t = t/bytesPerMetricUnit; long gb = t%bytesPerMetricUnit; t = t/bytesPerMetricUnit; long tb = t; if (tb>lowerLimit) return Strings.makeRealString(tb + (1.0*gb/bytesPerMetricUnit), -1, precision, 0) + suffixTera; if (gb>lowerLimit) return Strings.makeRealString((tb*bytesPerMetricUnit) + gb + (1.0*mb/bytesPerMetricUnit), maxLen, precision, 0) + suffixGiga; if (mb>lowerLimit) return Strings.makeRealString((gb*bytesPerMetricUnit) + mb + (1.0*kb/bytesPerMetricUnit), maxLen, precision, 0) + suffixMega; if (kb>lowerLimit) return Strings.makeRealString((mb*bytesPerMetricUnit) + kb + (1.0*b/bytesPerMetricUnit), maxLen, precision, 0) + suffixKilo; return (kb*bytesPerMetricUnit) + b + suffixBytes; }
long upDownTimeMillisPerIter = sF.elapsed(TimeUnit.MILLISECONDS)/NUM_ITERS; log.info(JavaClassNames.niceClassAndMethod()+" PER ITER (over "+NUM_ITERS+"): "+ ByteSizeStrings.metric().makeSizeString( memLeakBytesPerIter )+", "+ Duration.millis(upDownTimeMillisPerIter)+" per up+down, "+ Duration.millis(sG.elapsed(TimeUnit.MILLISECONDS)/NUM_ITERS)+" per up+down+gc"