package com.github.davidmoten.rx; import java.util.Arrays; import java.util.concurrent.TimeUnit; import org.openjdk.jmh.annotations.Benchmark; import org.openjdk.jmh.infra.Blackhole; import com.github.davidmoten.rx.buffertofile.DataSerializers; import com.github.davidmoten.rx.perf.LatchedObserver; import rx.Observable; import rx.functions.Func1; import rx.schedulers.Schedulers; public class Benchmarks { // @Benchmark public void perfOnBackpressureBufferToFileFor100_000IntegersOnComputation(Blackhole bh) throws InterruptedException { LatchedObserver<Integer> observer = new LatchedObserver<Integer>(bh); Observable.range(1, 100000) .compose(Transformers.onBackpressureBufferToFile(DataSerializers.integer())) .subscribe(observer); observer.latch.await(100, TimeUnit.SECONDS); } // @Benchmark public void perfOnBackpressureBufferToFileFor100_000IntegersSychronous(Blackhole bh) throws InterruptedException { LatchedObserver<Integer> observer = new LatchedObserver<Integer>(bh); Observable.range(1, 100000).compose(Transformers .onBackpressureBufferToFile(DataSerializers.integer(), Schedulers.immediate())) .subscribe(observer); observer.latch.await(100, TimeUnit.SECONDS); } // @Benchmark public void perfOnBackpressureBufferToFileFor3000_1KMessagesOnComputation(Blackhole bh) throws InterruptedException { LatchedObserver<byte[]> observer = new LatchedObserver<byte[]>(bh); Observable.range(1, 3000).map(new Func1<Integer, byte[]>() { @Override public byte[] call(Integer n) { return new byte[1000]; } }).compose(Transformers.onBackpressureBufferToFile(DataSerializers.byteArray(), Schedulers.immediate())).subscribe(observer); observer.latch.await(100, TimeUnit.SECONDS); } // @Benchmark public void perfOnBackpressureBufferToFileFor3000_1KMessagesOnSynchronous(Blackhole bh) throws InterruptedException { LatchedObserver<byte[]> observer = new LatchedObserver<byte[]>(bh); Observable.range(1, 3000).map(new Func1<Integer, byte[]>() { @Override public byte[] call(Integer n) { return new byte[1000]; } }).compose(Transformers.onBackpressureBufferToFile(DataSerializers.byteArray(), Schedulers.immediate())).subscribe(observer); observer.latch.await(100, TimeUnit.SECONDS); } @Benchmark public void perfStringSplit() { Observable.from(Arrays // .asList("the quick brown ", "fox jumped over", " the lazy", " dog")) // .compose(Transformers.split("o")); } }