public static void main(String[] args) throws Throwable { // assure the benchmarks are valid before running BenchmarkData data = new BenchmarkData(); data.setup(); new BenchmarkMapSubscript().mapSubscript(data); Options options = new OptionsBuilder() .verbosity(VerboseMode.NORMAL) .warmupMode(WarmupMode.INDI) .include(".*" + BenchmarkMapSubscript.class.getSimpleName() + ".*") .build(); new Runner(options).run(); }
@Benchmark @OperationsPerInvocation(POSITIONS) public Object mapSubscript(BenchmarkData data) throws Throwable { int position = 0; List<Page> pages = new ArrayList<>(); while (position < data.getPage().getPositionCount()) { position = data.getPageProcessor() .process( SESSION, data.getPage(), position, data.getPage().getPositionCount(), data.getPageBuilder()); pages.add(data.getPageBuilder().build()); data.getPageBuilder().reset(); } return pages; }
@Benchmark public long hashLong(BenchmarkData data, ByteCounter counter) { counter.add(SizeOf.SIZE_OF_LONG); return Murmur3Hash128.hash64(data.getSlice(), 0, 8); }
@Benchmark public long guava(BenchmarkData data, ByteCounter counter) { counter.add(data.getSlice().length()); return Hashing.murmur3_128().hashBytes(data.getBytes()).asLong(); }
@Benchmark public Slice hash(BenchmarkData data, ByteCounter counter) { counter.add(data.getSlice().length()); return Murmur3Hash128.hash(data.getSlice()); }