void observe(uint iters, int N) { for (uint iter = 0; iter < iters; iter++) { BenchmarkSuspender bs; Subject<int> subject; std::vector<std::unique_ptr<Observer<int>>> observers; for (int i = 0; i < N; i++) { observers.push_back(makeObserver()); } bs.dismiss(); for (int i = 0; i < N; i++) { subject.observe(std::move(observers[i])); } bs.rehire(); } }
void notifyInlineObservers(uint iters, int N) { for (uint iter = 0; iter < iters; iter++) { BenchmarkSuspender bs; Subject<int> subject; std::vector<Observer<int>*> observers; for (int i = 0; i < N; i++) { observers.push_back(makeObserver().release()); } for (int i = 0; i < N; i++) { subject.observe(observers[i]); } bs.dismiss(); subject.onNext(42); bs.rehire(); } }