in metrics-core/src/benchmarks/java/com/amazon/metrics/DoubleFormatTest.java [146:170]
public void benchmark() throws Exception {
final long iterations = 1000000;
long duration_StringFormat = run_benchmark(iterations, (a) -> String.format("%.6f", a));
NumberFormat javaFormatter = NumberFormat.getInstance();
javaFormatter.setMinimumFractionDigits(0);
javaFormatter.setMaximumFractionDigits(6);
javaFormatter.setGroupingUsed(false);
long duration_JavaFormat = run_benchmark(iterations, (a) -> javaFormatter.format(a));
long duration_JavaStringBuilder = run_benchmark(iterations, (a) -> (new StringBuilder()).append(a));
long duration_DoubleFormat = run_benchmark(iterations, (a) -> DoubleFormat.format(new StringBuilder(), a));
System.out.println("DoubleFormat Performance comparison: " + iterations +" iterations");
System.out.println("\tJava String.format: " + duration_StringFormat + " ms");
System.out.println("\tJava NumberFormat: " + duration_JavaFormat + " ms");
System.out.println("\tJava StringBuilder: " + duration_JavaStringBuilder + " ms");
System.out.println("\tDoubleFormat: " + duration_DoubleFormat + " ms");
assertTrue(duration_DoubleFormat < duration_StringFormat);
assertTrue(duration_DoubleFormat < duration_JavaFormat);
assertTrue(duration_DoubleFormat < duration_JavaStringBuilder);
}