== Benchmark package org.openjdk; import org.openjdk.jmh.annotations.*; import java.util.UUID; import java.util.concurrent.TimeUnit; @Warmup(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS) @Measurement(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS) @Fork(3) @BenchmarkMode(Mode.AverageTime) @OutputTimeUnit(TimeUnit.NANOSECONDS) @State(Scope.Thread) public class UUIDBench { private UUID uuid; @Setup(Level.Iteration) public void setup() { uuid = UUID.randomUUID(); } @Benchmark public String test() { return uuid.toString(); } } === Throughput performance: JDK 8 update 66: 244.267 ± 1.221 ns/op JDK 9b92 (pre-Compact Strings): 36.703 ± 0.434 ns/op JDK 9 dev, -XX:+CS, Baseline: 42.616 ± 0.475 ns/op JDK 9 dev, -XX:+CS, Patched: 24.396 ± 0.183 ns/op (1.8x improvement) JDK 9 dev, -XX:-CS, Baseline: 38.394 ± 0.333 ns/op JDK 9 dev, -XX:-CS, Patched: 31.874 ± 0.382 ns/op (1.2x improvement) === Allocation pressure: JDK 8 update 66: 736 B/op JDK 9b92 (pre-Compact Strings): 112 B/op JDK 9 dev, -XX:+CS, Baseline: 168 B/op JDK 9 dev, -XX:+CS, Patched: 80 B/op (2.1x improvement) JDK 9 dev, -XX:-CS, Baseline: 200 B/op JDK 9 dev, -XX:-CS, Patched: 112 B/op (1.8x improvement)