HTML Preparation code:
AخA
 
1
<script src='https://unpkg.com/rxjs@6.5.5/bundles/rxjs.umd.min.js'></script>
Script Preparation code:
 
var rawdata = Array.from(Array(100000).keys()) // 10k numbers 1,2,3,4,5...
Tests:
  • RxJS one pipe

    x
     
    let { from, Observable } = rxjs;
    let { flatMap, map, tap, toArray } = rxjs.operators;
    const data$ = from(rawdata)
        .pipe(
            map(values => {
                let count = 0;
                for (let i = 0; i < 50; i++) {
                  count = count + 1;
                }
                return count;
            })
        )
    let data;
    data$.subscribe(d => data = d);
  • Several pipes

     
    let { from, Observable } = rxjs;
    let { flatMap, map, tap, toArray } = rxjs.operators;
    const data$ = from(rawdata)
        .pipe(
            map(values => {
                let count = 0;
                for (let i = 0; i < 10; i++) {
                  count = count + 1;
                }
                return count;
            }),
                map(values => {
                let count = 0;
                for (let i = 0; i < 10; i++) {
                  count = count + 1;
                }
                return count;
            }),
                map(values => {
                let count = 0;
                for (let i = 0; i < 10; i++) {
                  count = count + 1;
                }
                return count;
            }),
          map(values => {
                let count = 0;
                for (let i = 0; i < 10; i++) {
                  count = count + 1;
                }
                return count;
            }),
          map(values => {
                let count = 0;
                for (let i = 0; i < 10; i++) {
                  count = count + 1;
                }
                return count;
            })
        )
    let data;
    data$.subscribe(d => data = d);
  • Many pipes same function

     
    let { from, Observable } = rxjs;
    let { flatMap, map, tap, toArray } = rxjs.operators;
    function myOperator(values) {
      let count = 0;
      for (let i = 0; i < 10; i++) {
        count = count + 1;
      }
      return count;
    }
    const data$ = from(rawdata)
        .pipe(
          map(myOperator),
          map(myOperator),
          map(myOperator),
          map(myOperator),
          map(myOperator)
        )
    let data;
    data$.subscribe(d => data = d);
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    RxJS one pipe
    Several pipes
    Many pipes same function

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 2 years ago)
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36
Chrome 112 on Linux
View result in a separate tab
Test name Executions per second
RxJS one pipe 22.3 Ops/sec
Several pipes 11.0 Ops/sec
Many pipes same function 10.4 Ops/sec