package org.openjdk; import java.io.*; import java.util.*; import java.util.concurrent.TimeUnit; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; import org.openjdk.jmh.annotations.*; import org.openjdk.jmh.infra.Blackhole; @BenchmarkMode(Mode.AverageTime) @OutputTimeUnit(TimeUnit.MICROSECONDS) @Warmup(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS) @Measurement(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS) @Threads(Threads.MAX) @Fork(1) @State(Scope.Thread) public class GZIPUncompressBench { byte[] src; @Setup public void setUp() throws Exception { ByteArrayOutputStream baos = new ByteArrayOutputStream(); try (GZIPOutputStream gos = new GZIPOutputStream(baos); ObjectOutputStream oos = new ObjectOutputStream(gos)) { oos.writeObject(new byte[65536]); } baos.close(); src = baos.toByteArray(); } @Benchmark public Object test() throws Exception { try (ByteArrayInputStream bais = new ByteArrayInputStream(src); GZIPInputStream gis = new GZIPInputStream(bais); ObjectInputStream ois = new ObjectInputStream(gis)) { return ois.readObject(); } } }