GithubHelp home page GithubHelp logo

Comments (3)

ShaishavGandhi avatar ShaishavGandhi commented on July 28, 2024

Some preliminary results from putting guarded delegate behind a config.

Event throughput: grouped by number of events:

1 item (observable)
RxDogTagAndroidPerf.observable1_false                                                 302ns    0.000ms
RxDogTagAndroidPerf.observable1_true_withoutGuardedDelegate                        15,980ns    0.016ms  5191.39%
RxDogTagAndroidPerf.observable1_true                                               16,681ns    0.017ms  5423.51%

1 item (flowable)
RxDogTagAndroidPerf.flowable1_false                                                   452ns    0.000ms
RxDogTagAndroidPerf.flowable1_true_withoutGuardedDelegate                          16,214ns    0.016ms  3487.17%
RxDogTagAndroidPerf.flowable1_true                                                 16,821ns    0.017ms  3621.46%

1000 items (observable)
RxDogTagAndroidPerf.observable1000_false                                           27,873ns   0.028ms
RxDogTagAndroidPerf.observable1000_true_withoutGuardedDelegate                     50,833ns   0.051ms  82.37%
RxDogTagAndroidPerf.observable1000_true                                           242,344ns   0.242ms  769.46%

1000 items (flowable)
RxDogTagAndroidPerf.flowable1000_false                                             28,783ns   0.029ms
RxDogTagAndroidPerf.flowable1000_true_withoutGuardedDelegate                       51,597ns   0.052ms  79.26%
RxDogTagAndroidPerf.flowable1000_true                                             207,969ns   0.208ms  622.54%

1000000 items (observable)
RxDogTagAndroidPerf.observable1000000_false                                    27,728,336ns  27.728ms
RxDogTagAndroidPerf.observable1000000_true_withoutGuardedDelegate              36,405,368ns  36.405ms    31.29%
RxDogTagAndroidPerf.observable1000000_true                                    274,318,622ns  274.319ms   889.31%

1000000 items (flowable)
RxDogTagAndroidPerf.flowable1000000_false                                      28,777,451ns  28.777ms
RxDogTagAndroidPerf.flowable1000000_true_withoutGuardedDelegate                36,235,889ns  36.236ms    25.92%
RxDogTagAndroidPerf.flowable1000000_true                                      218,021,428ns  218.021ms   657.61%

Subscribe cost: grouped by complexity:

Simple (observable)
RxDogTagAndroidPerf.observable_false_subscribe_simple                                 220ns    0.000ms
RxDogTagAndroidPerf.observable_true_subscribe_simple_withoutGuardedDelegate        15,845ns    0.016ms  7102.27%
RxDogTagAndroidPerf.observable_true_subscribe_simple                               15,951ns    0.016ms  7150.45%

Simple (flowable)
RxDogTagAndroidPerf.flowable_false_subscribe_simple                                   201ns    0.000ms
RxDogTagAndroidPerf.flowable_true_subscribe_simple                                 15,928ns    0.016ms  7824.38%
RxDogTagAndroidPerf.flowable_true_subscribe_simple_withoutGuardedDelegate          15,935ns    0.016ms  7827.86%

Complex (observable)
RxDogTagAndroidPerf.observable_false_subscribe_complex                              2,843ns   0.003ms
RxDogTagAndroidPerf.observable_true_subscribe_complex                              22,103ns   0.022ms  677.45%
RxDogTagAndroidPerf.observable_true_subscribe_complex_withoutGuardedDelegate       25,474ns   0.025ms  796.03%

Complex (flowable)
RxDogTagAndroidPerf.flowable_true_subscribe_complex                                29,057ns   0.029ms
RxDogTagAndroidPerf.flowable_true_subscribe_complex_withoutGuardedCall             37,796ns   0.038ms  30.08%
RxDogTagAndroidPerf.flowable_false_subscribe_complex                               70,442ns   0.070ms  142.43%

E2E amortized cost:

Observable
RxDogTagAndroidPerf.observable_false_e2e                                           91,770ns  0.092ms
RxDogTagAndroidPerf.observable_true_e2e_withoutGuardedDelegate                    121,980ns  0.122ms  32.92%
RxDogTagAndroidPerf.observable_true_e2e                                           141,563ns  0.142ms  54.26%

Flowable
RxDogTagAndroidPerf.flowable_false_e2e                                            115,781ns  0.116ms
RxDogTagAndroidPerf.flowable_true_e2e                                             166,822ns  0.167ms  44.08%
RxDogTagAndroidPerf.flowable_true_e2e_withoutGuardedDelegate                      173,802ns  0.174ms  50.11%

from rxdogtag.

ZacSweers avatar ZacSweers commented on July 28, 2024

Wowsers, so the guarded delegate calls seem to be most of the cost. This matches what I saw in some preliminary testing. We should definitely add a flag to control them in Configuration

from rxdogtag.

ZacSweers avatar ZacSweers commented on July 28, 2024

CC @dlew

from rxdogtag.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.