public static void RunFastBehaviourSubject() { //FastBehaviourSubject is not really about speed, but also about new parameter less constructor //Observers My Fast Original // 0 1923 2878 // 1 2406 3101 // 2 3230 3307 // 3 3113 3508 // 4 3637 3719 Console.WriteLine("FastBehaviourSubject"); Console.WriteLine("Observers My Fast Original"); for (var observers = 0; observers < 5; observers++) { Console.Write("{0,9} ", observers); { var subj = new FastBehaviourSubject <int>(0); for (var i = 0; i < observers; i++) { subj.Subscribe(new EmptyIntObserver()); } subj.OnNext(0); var sw = Stopwatch.StartNew(); for (var i = 0; i < 100000000; i++) { subj.OnNext(i); } Console.Write("{0,8} ", sw.ElapsedMilliseconds); } { var subj = new BehaviorSubject <int>(0); for (var i = 0; i < observers; i++) { subj.Subscribe(new EmptyIntObserver()); } subj.OnNext(0); var sw = Stopwatch.StartNew(); for (var i = 0; i < 100000000; i++) { subj.OnNext(i); } Console.Write("{0,8} ", sw.ElapsedMilliseconds); } Console.WriteLine(); } }