Skip to content

Commit

Permalink
Update Readme.md
Browse files Browse the repository at this point in the history
  • Loading branch information
victimsnino authored Nov 23, 2022
1 parent 9be3838 commit f399044
Showing 1 changed file with 11 additions and 9 deletions.
20 changes: 11 additions & 9 deletions Readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,13 @@ ReactivePlusPlus is reactive programming library for C++ language inspired by "o
See the [BUILDING](BUILDING.md) document to know how to build RPP.
If you are going to know more details about developing for RPP check [HACKING](HACKING.md) document.

## Example:
## Implementation status:

In short: ReactivePlusPlus is library for building asynchronous event-driven streams of data with help of sequences of primitive operators in the declarative form.

Currently ReactivePlusPlus is still under development but it has a lot of implemented operators for now. List of implemented features can be found in [API Reference](https://victimsnino.github.io/ReactivePlusPlus/docs/html/group__rpp.html) with very detailed documentation for each of them

In short: ReactivePlusPlus is library for building asynchronous event-driven streams of data with help of sequences of primitive operators in the declarative form. For example:
**Example**:

```cpp
rpp::source::from_callable(&::getchar)
Expand All @@ -28,18 +32,16 @@ rpp::source::from_callable(&::getchar)
.map(&::toupper)
.subscribe([](char v) { std::cout << v; });
```
## Features:
Main advantages of ReactivePlusPlus are that it is written in Modern C++ with Performance and Usage in mind. As a result it is fast, readable, easy to use and well-documented. And it is proven with [continous benchmarking results and comparison with RxCpp](https://victimsnino.github.io/ReactivePlusPlus/benchmark)
**NOTE**: ReactivePlusPlus is library for C++20. So, it works only on compilers that supports most C++20 features. CI uses gcc-10, clang-11, visual studio 2022
### QT Support
## Implementation status:
On a par with this ReactivePlusPlus provides native support for QT via RppQt target (extension over original RPP). List of implemented features can be found in [QT API Reference](https://victimsnino.github.io/ReactivePlusPlus/docs/html/group__rppqt.html) with very detailed documentation for each of them.
Currently ReactivePlusPlus is still under development but it has a lot of implemented operators for now. List of implemented features can be found in [API Reference](https://victimsnino.github.io/ReactivePlusPlus/docs/html/group__rpp.html) with very detailed documentation for each of them
## Features:
On a par with this ReactivePlusPlus provides native support for QT via RppQt target (extension over original RPP). List of implemented features can be found in [QT API Reference](https://victimsnino.github.io/ReactivePlusPlus/docs/html/group__rppqt.html) with very detailed documentation for each of them.
Main advantages of ReactivePlusPlus are that it is written in Modern C++ with Performance and Usage in mind. As a result it is fast, readable, easy to use and well-documented. And it is proven with [continous benchmarking results and comparison with RxCpp](https://victimsnino.github.io/ReactivePlusPlus/benchmark)
**NOTE**: ReactivePlusPlus is library for C++20. So, it works only on compilers that supports most C++20 features. CI uses gcc-10, clang-11, visual studio 2022
# Useful links
- [Why ReactivePlusPlus? What about existing Reactive Extension libraries for C++?](https://victimsnino.github.io/ReactivePlusPlus/docs/html/why_rpp.html)
Expand Down

2 comments on commit f399044

@github-actions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

BENCHMARK RESULTS (AUTOGENERATED)

ci-ubuntu-clang

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 0.40ns 0.335342 1.20 0.40ns
Dynamic observable construction 28.79ns 29.1818 0.99 25.22ns
Specific observable construction + as_dynamic 31.64ns 29.2169 1.08 25.35ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 93.87ns 89.1409 1.05 293.57ns
Specific observable lift dynamic observer 119.51ns 112.494 1.06 312.54ns
Dynamic observable lift specific observer 175.53ns 171.133 1.03 342.63ns
Dynamic observable lift dynamic observer 189.70ns 175.482 1.08 327.87ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 57.21ns 57.9558 0.99 299.15ns
Specific observable subscribe dynamic observer 71.76ns 71.6028 1.00 303.02ns
Dynamic observable subscribe specific observer 133.43ns 126.043 1.06 336.66ns
Dynamic observable subscribe dynamic observer 129.12ns 121.623 1.06 318.98ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 57.06ns 58.0141 0.98 313.11ns
Dynamic observable subscribe lambda 119.95ns 123.997 0.97 481.70ns
Specific observable subscribe lambda without subscription 56.82ns 58.0918 0.98 290.24ns
Dynamic observable subscribe lambda without subscription 120.78ns 124.566 0.97 331.92ns
Specific observable subscribe specific subscriber 25.77ns 27.8327 0.93 226.33ns
Dynamic observable subscribe specific subscriber 89.49ns 88.6726 1.01 269.97ns
Specific observable subscribe dynamic observer 25.72ns 28.2167 0.91 245.97ns
Dynamic observable subscribe dynamic observer 78.73ns 75.3107 1.05 264.27ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.40ns 0.335115 1.20 0.40ns
Dynamic observer construction 28.61ns 31.5077 0.91 19.35ns
Specific observer construction + as_dynamic 28.54ns 29.183 0.98 19.70ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.44ns 0.668975 0.66 0.44ns
Dynamic observer OnNext 2.01ns 2.00675 1.00 1.61ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 33.75ns 34.885 0.97 70.41ns
Make copy of subscriber 16.07ns 16.7393 0.96 5.48ns
Transform subsriber to dynamic 44.60ns 43.625 1.02 24.53ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 33.50ns 34.8688 0.96 48.55ns
composite_subscription add 53.74ns 49.186 1.09 83.50ns
composite_subscription unsubscribe 44.35ns 43.6819 1.02 21.72ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 242.76ns 245.07 0.99 1871.25ns
sending of values from observable via buffer to subscriber 7.20ns 5.35956 1.34 23.20ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 281.25ns 255.516 1.10 513.16ns
long stateful chain creation + subscribe 403.46ns 373.804 1.08 1498.43ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 908.93ns 866.444 1.05 897.61ns
sending of values from observable via combine_latest to subscriber 34.13ns 27.4411 1.24 1.64ns

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 1960.80ns 1845.15 1.06 3924.87ns
concat_with 2288.23ns 2155.95 1.06 4266.28ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 112.66ns 110.68 1.02 247.03ns
sending of values from observable via distinct_until_changed to subscriber 2.41ns 2.68041 0.90 1.34ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 135.59ns 123.645 1.10 621.13ns
sending of values from observable via first to subscriber 0.81ns 0.670507 1.20 0.81ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 64.49ns 61.9674 1.04 668.77ns
error 113.40ns 112.009 1.01 782.35ns
never 25.84ns 28.8038 0.90 244.86ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 77.43ns 77.9983 0.99 704.78ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 0.77ns 1.33994 0.57 110.40ns
re-schedule 10 times 10.86ns 11.4439 0.95 139.15ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 65.94ns 62.8907 1.05 678.39ns
just send variadic 88.84ns 95.3291 0.93 803.83ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 171.98ns 166.516 1.03 362.20ns
sending of values from observable via last to subscriber 2.07ns 2.07696 0.99 1.55ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 76.07ns 68.5673 1.11 238.80ns
sending of values from observable via map to subscriber 0.89ns 1.34107 0.67 1.74ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 1909.63ns 1800.37 1.06 3826.87ns
merge_with 2249.08ns 2105.89 1.07 4022.50ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 442.39ns 425.208 1.04 2547.33ns
sending of values from observable via observe_on to subscriber 59.52ns 61.4442 0.97 198.03ns

on_error_resume_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_error_resume_next construction from observable via dot + subscribe 435.03ns 419.005 1.04 983.86ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 29.61ns 24.0616 1.23 9.63ns
on_error 0.61ns 0.673105 0.90 19.00ns
on_completed 0.61ns 0.673433 0.90 0.61ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 196.50ns 192.652 1.02 152.51ns
get_observable 33.69ns 26.4401 1.27 45.64ns
get_subscriber 66.80ns 60.4622 1.10 11.70ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 4169.57ns 3904.92 1.07 3216.10ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 106.39ns 100.423 1.06 299.24ns
sending of values from observable via scan to subscriber 2.01ns 2.01374 1.00 1.61ns

single-threaded locks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no-lock increment 3.15ns 2.01986 1.56 .
mutex lock increment 22.52ns 18.0915 1.24 .
spin-lock increment 10.47ns 9.06257 1.15 .

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 105.06ns 98.465 1.07 477.96ns
sending of values from observable via skip to subscriber 2.41ns 2.34055 1.03 2.62ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 2329.69ns 2205.38 1.06 3189.12ns
sending of values from observable via switch_on_next to subscriber 610.15ns 572.384 1.07 711.19ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 181.09ns 170.456 1.06 520.36ns
sending of values from observable via take to subscriber 2.01ns 2.34431 0.86 2.34ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 214.74ns 210.191 1.02 548.66ns
sending of values from observable via take_last to subscriber 3.30ns 2.69498 1.23 3.72ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 1080.18ns 1028.01 1.05 1275.52ns
sending of values from observable via take_until to subscriber 10.44ns 9.04692 1.15 2.03ns

timeout

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
timeout construction from observable via dot + subscribe with run_loop 895.18ns 873.298 1.03 13319.40ns
sending of values from observable via timeout to subscriber with unreachable timeout interval with run_loop 58.95ns 55.8661 1.06 19298.30ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 9.70ns 11.6217 0.83 145.16ns
re-schedule 10 times 26.99ns 32.5355 0.83 177.98ns
recursively schedule 10 times 1381.00ns 1366.47 1.01 7094.01ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 2149.71ns 1999.49 1.08 3337.22ns
sending of values from observable via window to subscriber 582.96ns 546.097 1.07 374.96ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 1053.75ns 1023.29 1.03 1094.79ns
sending of values from observable via with_latest_from to subscriber 29.37ns 27.0839 1.08 2.82ns

ci-ubuntu-gcc

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 0.33ns 0.335188 1.00 0.33ns
Dynamic observable construction 31.53ns 31.4765 1.00 22.83ns
Specific observable construction + as_dynamic 31.51ns 31.504 1.00 23.65ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 97.83ns 97.8055 1.00 343.44ns
Specific observable lift dynamic observer 126.45ns 126.823 1.00 354.35ns
Dynamic observable lift specific observer 181.46ns 181.923 1.00 403.06ns
Dynamic observable lift dynamic observer 194.78ns 193.247 1.01 371.25ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 60.87ns 60.929 1.00 331.55ns
Specific observable subscribe dynamic observer 77.31ns 77.4787 1.00 337.82ns
Dynamic observable subscribe specific observer 130.45ns 130.583 1.00 377.97ns
Dynamic observable subscribe dynamic observer 127.35ns 127.512 1.00 352.42ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 60.82ns 60.9904 1.00 333.30ns
Dynamic observable subscribe lambda 129.90ns 130.918 0.99 373.73ns
Specific observable subscribe lambda without subscription 60.99ns 60.8761 1.00 338.15ns
Dynamic observable subscribe lambda without subscription 129.74ns 130.22 1.00 375.18ns
Specific observable subscribe specific subscriber 30.46ns 30.531 1.00 269.52ns
Dynamic observable subscribe specific subscriber 96.12ns 96.2029 1.00 317.28ns
Specific observable subscribe dynamic observer 30.43ns 30.4144 1.00 279.06ns
Dynamic observable subscribe dynamic observer 85.05ns 85.1034 1.00 291.05ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.34ns 0.335236 1.00 0.34ns
Dynamic observer construction 31.48ns 31.4375 1.00 21.11ns
Specific observer construction + as_dynamic 31.49ns 31.5864 1.00 21.12ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.34ns 0.334963 1.00 0.34ns
Dynamic observer OnNext 2.01ns 2.01101 1.00 1.73ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 34.52ns 34.721 0.99 63.84ns
Make copy of subscriber 16.73ns 16.708 1.00 4.48ns
Transform subsriber to dynamic 44.20ns 44.5205 0.99 25.52ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 34.45ns 34.4899 1.00 58.76ns
composite_subscription add 51.14ns 49.3598 1.04 92.10ns
composite_subscription unsubscribe 41.64ns 41.8341 1.00 21.66ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 233.68ns 233.734 1.00 1966.52ns
sending of values from observable via buffer to subscriber 6.38ns 6.3995 1.00 31.82ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 287.02ns 287.48 1.00 697.83ns
long stateful chain creation + subscribe 425.26ns 424.59 1.00 1467.52ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 913.38ns 920.113 0.99 1116.52ns
sending of values from observable via combine_latest to subscriber 28.47ns 28.4052 1.00 2.35ns

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 1895.59ns 1901.27 1.00 3610.59ns
concat_with 2247.10ns 2245.52 1.00 3978.30ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 120.08ns 120.07 1.00 362.75ns
sending of values from observable via distinct_until_changed to subscriber 2.72ns 2.72695 1.00 2.35ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 138.19ns 138.611 1.00 736.69ns
sending of values from observable via first to subscriber 1.34ns 1.34094 1.00 1.01ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 67.17ns 67.4039 1.00 735.55ns
error 119.03ns 118.621 1.00 841.29ns
never 32.11ns 32.1638 1.00 282.51ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 86.15ns 86.1723 1.00 762.93ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 1.34ns 1.34274 1.00 129.76ns
re-schedule 10 times 22.47ns 22.4674 1.00 168.35ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 70.73ns 71.1138 0.99 756.51ns
just send variadic 110.78ns 110.937 1.00 824.70ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 175.47ns 175.579 1.00 444.12ns
sending of values from observable via last to subscriber 2.67ns 2.67473 1.00 1.34ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 82.09ns 80.6702 1.02 350.13ns
sending of values from observable via map to subscriber 0.75ns 0.752529 1.00 2.68ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 1846.71ns 1856.46 0.99 3787.29ns
merge_with 2194.67ns 2210.81 0.99 4069.30ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 465.75ns 467.404 1.00 2853.58ns
sending of values from observable via observe_on to subscriber 63.41ns 63.4322 1.00 238.99ns

on_error_resume_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_error_resume_next construction from observable via dot + subscribe 433.32ns 433.138 1.00 797.86ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 22.42ns 22.4291 1.00 10.97ns
on_error 0.67ns 0.674991 1.00 16.82ns
on_completed 0.67ns 0.673737 1.00 0.67ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 206.16ns 202.376 1.02 177.54ns
get_observable 29.46ns 29.4666 1.00 48.64ns
get_subscriber 57.33ns 57.3216 1.00 23.09ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 4140.18ns 4140.66 1.00 3156.04ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 115.09ns 119.229 0.97 389.75ns
sending of values from observable via scan to subscriber 1.70ns 1.69527 1.00 1.68ns

single-threaded locks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no-lock increment 2.01ns 2.00912 1.00 .
mutex lock increment 18.06ns 18.0785 1.00 .
spin-lock increment 9.03ns 9.0466 1.00 .

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 114.62ns 114.476 1.00 529.24ns
sending of values from observable via skip to subscriber 2.36ns 2.362 1.00 2.34ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 2319.95ns 2338.79 0.99 4169.34ns
sending of values from observable via switch_on_next to subscriber 596.91ns 596.206 1.00 1100.87ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 175.01ns 174.819 1.00 597.25ns
sending of values from observable via take to subscriber 4.44ns 3.51649 1.26 3.48ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 206.36ns 206.072 1.00 647.83ns
sending of values from observable via take_last to subscriber 3.08ns 3.05785 1.01 6.18ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 1067.09ns 1063.26 1.00 1583.22ns
sending of values from observable via take_until to subscriber 9.03ns 10.2593 0.88 1.79ns

timeout

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
timeout construction from observable via dot + subscribe with run_loop 937.15ns 932.656 1.00 16621.70ns
sending of values from observable via timeout to subscriber with unreachable timeout interval with run_loop 58.16ns 58.1104 1.00 13674.60ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 23.44ns 23.4711 1.00 183.88ns
re-schedule 10 times 51.23ns 51.1152 1.00 221.68ns
recursively schedule 10 times 1465.26ns 1449.44 1.01 8732.91ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 2109.16ns 2136.66 0.99 3315.14ns
sending of values from observable via window to subscriber 584.77ns 587.123 1.00 421.33ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 1088.39ns 1089.8 1.00 1413.19ns
sending of values from observable via with_latest_from to subscriber 26.73ns 26.7952 1.00 4.38ns

ci-windows

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 1.51ns 1.99653 0.76 0.67ns
Dynamic observable construction 79.78ns 97.2211 0.82 122.41ns
Specific observable construction + as_dynamic 80.15ns 98.1449 0.82 122.33ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 151.01ns 172.347 0.88 1251.52ns
Specific observable lift dynamic observer 185.46ns 199.774 0.93 1293.63ns
Dynamic observable lift specific observer 289.53ns 353.845 0.82 1433.61ns
Dynamic observable lift dynamic observer 242.72ns 283.069 0.86 1335.60ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 116.66ns 134.95 0.86 1242.00ns
Specific observable subscribe dynamic observer 136.63ns 153.24 0.89 1250.90ns
Dynamic observable subscribe specific observer 233.68ns 274.156 0.85 1386.26ns
Dynamic observable subscribe dynamic observer 184.69ns 211.906 0.87 1276.30ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 121.12ns 120.127 1.01 1200.86ns
Dynamic observable subscribe lambda 234.02ns 287.989 0.81 1380.68ns
Specific observable subscribe lambda without subscription 121.06ns 137.175 0.88 1198.95ns
Dynamic observable subscribe lambda without subscription 233.09ns 253.454 0.92 1365.42ns
Specific observable subscribe specific subscriber 30.83ns 36.7012 0.84 863.87ns
Dynamic observable subscribe specific subscriber 146.63ns 166.222 0.88 1042.80ns
Specific observable subscribe dynamic observer 30.84ns 38.0868 0.81 909.24ns
Dynamic observable subscribe dynamic observer 79.11ns 101.038 0.78 934.96ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 1.50ns 1.8371 0.82 1.50ns
Dynamic observer construction 81.82ns 102.703 0.80 114.22ns
Specific observer construction + as_dynamic 81.71ns 100.729 0.81 115.00ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.67ns 0.78842 0.85 0.67ns
Dynamic observer OnNext 2.01ns 2.37302 0.85 2.01ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 90.54ns 95.4735 0.95 358.00ns
Make copy of subscriber 16.72ns 21.9245 0.76 33.76ns
Transform subsriber to dynamic 96.85ns 99.585 0.97 151.82ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 90.39ns 98.5847 0.92 348.67ns
composite_subscription add 81.42ns 90.8222 0.90 153.41ns
composite_subscription unsubscribe 62.92ns 71.3898 0.88 124.64ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 359.44ns 403.262 0.89 4511.33ns
sending of values from observable via buffer to subscriber 7.36ns 7.98966 0.92 92.06ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 269.34ns 317.675 0.85 1768.93ns
long stateful chain creation + subscribe 667.75ns 770.5 0.87 3224.88ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 1650.27ns 1994.0 0.83 3015.75ns
sending of values from observable via combine_latest to subscriber 47.52ns 82.7627 0.57 4.49ns

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 2785.90ns 3395.75 0.82 10678.00ns
concat_with 3465.25ns 4079.12 0.85 11698.00ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 185.44ns 207.389 0.89 1036.83ns
sending of values from observable via distinct_until_changed to subscriber 4.55ns 6.11759 0.74 3.89ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 128.41ns 156.291 0.82 2651.00ns
sending of values from observable via first to subscriber 2.35ns 3.5274 0.66 1.78ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 66.39ns 81.9252 0.81 3523.91ns
error 112.83ns 142.091 0.79 2489.60ns
never 31.40ns 37.8715 0.83 896.92ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 135.37ns 158.638 0.85 2521.90ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 1.68ns 1.46847 1.14 407.06ns
re-schedule 10 times 97.78ns 123.306 0.79 433.05ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 65.58ns 79.0476 0.83 2465.89ns
just send variadic 103.22ns 119.691 0.86 2503.78ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 224.28ns 267.218 0.84 1464.33ns
sending of values from observable via last to subscriber 3.20ns 4.28031 0.75 3.30ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 87.99ns 93.3036 0.94 1015.08ns
sending of values from observable via map to subscriber 3.51ns 3.89211 0.90 6.91ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 2670.30ns 3061.56 0.87 11048.50ns
merge_with 3356.12ns 3944.12 0.85 11785.50ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 710.02ns 755.333 0.94 5839.50ns
sending of values from observable via observe_on to subscriber 64.64ns 77.4387 0.83 1279.23ns

on_error_resume_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_error_resume_next construction from observable via dot + subscribe 645.11ns 756.611 0.85 1847.15ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 19.78ns 23.7781 0.83 32.76ns
on_error 2.81ns 3.434 0.82 18.83ns
on_completed 3.04ns 2.61594 1.16 1.60ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 358.76ns 520.283 0.69 614.47ns
get_observable 26.08ns 34.1569 0.76 163.86ns
get_subscriber 50.39ns 60.0022 0.84 92.26ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 6208.80ns 8462.33 0.73 11353.70ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 181.70ns 218.633 0.83 1267.19ns
sending of values from observable via scan to subscriber 5.40ns 6.33853 0.85 9.50ns

single-threaded locks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no-lock increment 1.87ns 2.98195 0.63 .
mutex lock increment 25.74ns 30.802 0.84 .
spin-lock increment 9.05ns 12.9163 0.70 .

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 185.31ns 285.834 0.65 1556.27ns
sending of values from observable via skip to subscriber 3.35ns 4.60632 0.73 4.43ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 3545.62ns 3838.0 0.92 13561.70ns
sending of values from observable via switch_on_next to subscriber 858.77ns 1003.71 0.86 3137.50ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 228.00ns 280.976 0.81 2181.17ns
sending of values from observable via take to subscriber 5.59ns 6.10523 0.92 6.17ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 328.22ns 379.115 0.87 2453.10ns
sending of values from observable via take_last to subscriber 4.25ns 5.08641 0.84 23.09ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 1596.38ns 1897.29 0.84 5268.40ns
sending of values from observable via take_until to subscriber 11.44ns 13.4299 0.85 5.25ns

timeout

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
timeout construction from observable via dot + subscribe with run_loop 1300.41ns 1606.56 0.81 5613.50ns
sending of values from observable via timeout to subscriber with unreachable timeout interval with run_loop 54.95ns 61.656 0.89 1343.19ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 19.30ns 22.2782 0.87 611.50ns
re-schedule 10 times 140.26ns 145.201 0.97 748.33ns
recursively schedule 10 times 2640.80ns 3091.0 0.85 19122.50ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 2963.44ns 3305.56 0.90 9753.33ns
sending of values from observable via window to subscriber 837.23ns 934.067 0.90 1627.14ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 2045.00ns 2582.64 0.79 6143.17ns
sending of values from observable via with_latest_from to subscriber 38.13ns 38.1141 1.00 6.91ns

@github-actions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

BENCHMARK RESULTS (AUTOGENERATED)

ci-ubuntu-clang

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 0.33ns 0.335342 1.00 0.34ns
Dynamic observable construction 29.22ns 29.1818 1.00 24.27ns
Specific observable construction + as_dynamic 29.22ns 29.2169 1.00 24.21ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 88.93ns 89.1409 1.00 289.35ns
Specific observable lift dynamic observer 112.59ns 112.494 1.00 336.96ns
Dynamic observable lift specific observer 169.59ns 171.133 0.99 335.24ns
Dynamic observable lift dynamic observer 175.46ns 175.482 1.00 332.48ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 58.10ns 57.9558 1.00 288.39ns
Specific observable subscribe dynamic observer 71.79ns 71.6028 1.00 304.04ns
Dynamic observable subscribe specific observer 124.25ns 126.043 0.99 335.01ns
Dynamic observable subscribe dynamic observer 121.69ns 121.623 1.00 324.41ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 58.10ns 58.0141 1.00 287.20ns
Dynamic observable subscribe lambda 124.21ns 123.997 1.00 323.89ns
Specific observable subscribe lambda without subscription 58.30ns 58.0918 1.00 288.16ns
Dynamic observable subscribe lambda without subscription 124.53ns 124.566 1.00 327.19ns
Specific observable subscribe specific subscriber 27.80ns 27.8327 1.00 232.62ns
Dynamic observable subscribe specific subscriber 88.61ns 88.6726 1.00 278.72ns
Specific observable subscribe dynamic observer 27.80ns 28.2167 0.99 237.88ns
Dynamic observable subscribe dynamic observer 75.44ns 75.3107 1.00 258.03ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.34ns 0.335115 1.00 0.34ns
Dynamic observer construction 32.00ns 31.5077 1.02 22.18ns
Specific observer construction + as_dynamic 29.14ns 29.183 1.00 21.39ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.67ns 0.668975 1.00 0.67ns
Dynamic observer OnNext 2.01ns 2.00675 1.00 2.35ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 34.86ns 34.885 1.00 66.19ns
Make copy of subscriber 16.71ns 16.7393 1.00 4.70ns
Transform subsriber to dynamic 43.50ns 43.625 1.00 26.01ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 34.87ns 34.8688 1.00 52.21ns
composite_subscription add 49.26ns 49.186 1.00 91.20ns
composite_subscription unsubscribe 43.46ns 43.6819 0.99 23.61ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 244.80ns 245.07 1.00 1856.55ns
sending of values from observable via buffer to subscriber 5.36ns 5.35956 1.00 27.29ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 255.37ns 255.516 1.00 503.14ns
long stateful chain creation + subscribe 374.61ns 373.804 1.00 1486.13ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 866.40ns 866.444 1.00 900.49ns
sending of values from observable via combine_latest to subscriber 27.46ns 27.4411 1.00 1.75ns

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 1855.52ns 1845.15 1.01 3417.82ns
concat_with 2158.38ns 2155.95 1.00 3670.82ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 110.54ns 110.68 1.00 246.70ns
sending of values from observable via distinct_until_changed to subscriber 2.69ns 2.68041 1.00 2.34ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 123.79ns 123.645 1.00 577.47ns
sending of values from observable via first to subscriber 0.67ns 0.670507 1.00 0.67ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 61.69ns 61.9674 1.00 614.99ns
error 111.68ns 112.009 1.00 762.38ns
never 28.76ns 28.8038 1.00 252.34ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 78.30ns 77.9983 1.00 665.23ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 1.34ns 1.33994 1.00 113.16ns
re-schedule 10 times 11.46ns 11.4439 1.00 143.50ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 62.59ns 62.8907 1.00 635.13ns
just send variadic 94.73ns 95.3291 0.99 738.36ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 166.43ns 166.516 1.00 355.20ns
sending of values from observable via last to subscriber 2.11ns 2.07696 1.01 1.68ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 68.53ns 68.5673 1.00 239.49ns
sending of values from observable via map to subscriber 1.34ns 1.34107 1.00 1.51ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 1811.31ns 1800.37 1.01 3368.84ns
merge_with 2108.66ns 2105.89 1.00 3557.38ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 426.90ns 425.208 1.00 2593.61ns
sending of values from observable via observe_on to subscriber 61.29ns 61.4442 1.00 199.50ns

on_error_resume_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_error_resume_next construction from observable via dot + subscribe 419.54ns 419.005 1.00 1003.15ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 24.11ns 24.0616 1.00 10.73ns
on_error 0.67ns 0.673105 1.00 19.21ns
on_completed 0.67ns 0.673433 1.00 0.67ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 189.07ns 192.652 0.98 174.52ns
get_observable 26.40ns 26.4401 1.00 50.50ns
get_subscriber 60.59ns 60.4622 1.00 13.14ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 3921.16ns 3904.92 1.00 3029.67ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 100.21ns 100.423 1.00 293.89ns
sending of values from observable via scan to subscriber 2.01ns 2.01374 1.00 2.01ns

single-threaded locks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no-lock increment 2.01ns 2.01986 1.00 .
mutex lock increment 18.13ns 18.0915 1.00 .
spin-lock increment 9.21ns 9.06257 1.02 .

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 98.61ns 98.465 1.00 482.18ns
sending of values from observable via skip to subscriber 2.34ns 2.34055 1.00 1.78ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 2202.88ns 2205.38 1.00 2829.26ns
sending of values from observable via switch_on_next to subscriber 570.67ns 572.384 1.00 644.86ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 169.24ns 170.456 0.99 489.12ns
sending of values from observable via take to subscriber 2.35ns 2.34431 1.00 3.36ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 210.16ns 210.191 1.00 525.64ns
sending of values from observable via take_last to subscriber 2.70ns 2.69498 1.00 3.76ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 1033.21ns 1028.01 1.01 1178.09ns
sending of values from observable via take_until to subscriber 9.07ns 9.04692 1.00 1.85ns

timeout

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
timeout construction from observable via dot + subscribe with run_loop 879.79ns 873.298 1.01 16843.70ns
sending of values from observable via timeout to subscriber with unreachable timeout interval with run_loop 55.87ns 55.8661 1.00 15562.30ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 11.42ns 11.6217 0.98 161.30ns
re-schedule 10 times 32.33ns 32.5355 0.99 188.17ns
recursively schedule 10 times 1383.93ns 1366.47 1.01 8060.10ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 2003.51ns 1999.49 1.00 3198.14ns
sending of values from observable via window to subscriber 548.76ns 546.097 1.00 365.77ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 1025.63ns 1023.29 1.00 1112.65ns
sending of values from observable via with_latest_from to subscriber 27.05ns 27.0839 1.00 3.02ns

ci-ubuntu-gcc

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 0.34ns 0.335188 1.00 0.33ns
Dynamic observable construction 31.51ns 31.4765 1.00 23.69ns
Specific observable construction + as_dynamic 31.51ns 31.504 1.00 23.93ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 97.63ns 97.8055 1.00 340.42ns
Specific observable lift dynamic observer 126.67ns 126.823 1.00 352.70ns
Dynamic observable lift specific observer 181.29ns 181.923 1.00 406.56ns
Dynamic observable lift dynamic observer 193.42ns 193.247 1.00 370.45ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 60.79ns 60.929 1.00 332.20ns
Specific observable subscribe dynamic observer 77.24ns 77.4787 1.00 338.41ns
Dynamic observable subscribe specific observer 130.65ns 130.583 1.00 376.66ns
Dynamic observable subscribe dynamic observer 127.49ns 127.512 1.00 351.33ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 60.99ns 60.9904 1.00 332.64ns
Dynamic observable subscribe lambda 130.56ns 130.918 1.00 373.68ns
Specific observable subscribe lambda without subscription 61.05ns 60.8761 1.00 339.62ns
Dynamic observable subscribe lambda without subscription 130.78ns 130.22 1.00 376.13ns
Specific observable subscribe specific subscriber 30.51ns 30.531 1.00 269.42ns
Dynamic observable subscribe specific subscriber 96.45ns 96.2029 1.00 317.33ns
Specific observable subscribe dynamic observer 30.49ns 30.4144 1.00 276.14ns
Dynamic observable subscribe dynamic observer 85.00ns 85.1034 1.00 289.57ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.34ns 0.335236 1.00 0.34ns
Dynamic observer construction 31.44ns 31.4375 1.00 20.83ns
Specific observer construction + as_dynamic 31.42ns 31.5864 0.99 21.07ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.34ns 0.334963 1.01 0.34ns
Dynamic observer OnNext 2.01ns 2.01101 1.00 1.76ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 34.74ns 34.721 1.00 64.87ns
Make copy of subscriber 16.72ns 16.708 1.00 4.45ns
Transform subsriber to dynamic 44.47ns 44.5205 1.00 25.25ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 34.44ns 34.4899 1.00 60.24ns
composite_subscription add 49.26ns 49.3598 1.00 90.59ns
composite_subscription unsubscribe 41.75ns 41.8341 1.00 21.60ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 234.58ns 233.734 1.00 1972.27ns
sending of values from observable via buffer to subscriber 6.39ns 6.3995 1.00 31.68ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 288.30ns 287.48 1.00 686.17ns
long stateful chain creation + subscribe 425.76ns 424.59 1.00 1406.47ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 914.24ns 920.113 0.99 1132.69ns
sending of values from observable via combine_latest to subscriber 28.47ns 28.4052 1.00 2.35ns

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 1915.51ns 1901.27 1.01 3615.25ns
concat_with 2257.44ns 2245.52 1.01 3916.66ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 120.16ns 120.07 1.00 360.16ns
sending of values from observable via distinct_until_changed to subscriber 2.71ns 2.72695 0.99 2.35ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 138.05ns 138.611 1.00 730.79ns
sending of values from observable via first to subscriber 1.34ns 1.34094 1.00 1.01ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 67.37ns 67.4039 1.00 772.19ns
error 118.64ns 118.621 1.00 877.98ns
never 32.35ns 32.1638 1.01 282.73ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 85.95ns 86.1723 1.00 760.96ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 1.34ns 1.34274 1.00 129.12ns
re-schedule 10 times 22.48ns 22.4674 1.00 179.21ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 70.85ns 71.1138 1.00 779.45ns
just send variadic 111.10ns 110.937 1.00 832.55ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 175.94ns 175.579 1.00 444.48ns
sending of values from observable via last to subscriber 2.68ns 2.67473 1.00 1.34ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 83.62ns 80.6702 1.04 346.99ns
sending of values from observable via map to subscriber 0.75ns 0.752529 1.00 2.68ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 1853.58ns 1856.46 1.00 3786.78ns
merge_with 2203.16ns 2210.81 1.00 4243.53ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 468.60ns 467.404 1.00 2831.94ns
sending of values from observable via observe_on to subscriber 64.85ns 63.4322 1.02 240.88ns

on_error_resume_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_error_resume_next construction from observable via dot + subscribe 435.80ns 433.138 1.01 800.38ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 22.41ns 22.4291 1.00 10.96ns
on_error 0.68ns 0.674991 1.00 16.79ns
on_completed 0.67ns 0.673737 1.00 0.67ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 207.64ns 202.376 1.03 180.02ns
get_observable 29.40ns 29.4666 1.00 48.87ns
get_subscriber 57.22ns 57.3216 1.00 23.14ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 4129.91ns 4140.66 1.00 3168.03ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 115.57ns 119.229 0.97 387.37ns
sending of values from observable via scan to subscriber 1.70ns 1.69527 1.00 1.68ns

single-threaded locks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no-lock increment 2.01ns 2.00912 1.00 .
mutex lock increment 18.35ns 18.0785 1.02 .
spin-lock increment 9.05ns 9.0466 1.00 .

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 114.60ns 114.476 1.00 532.46ns
sending of values from observable via skip to subscriber 2.36ns 2.362 1.00 2.35ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 2329.02ns 2338.79 1.00 4239.89ns
sending of values from observable via switch_on_next to subscriber 600.14ns 596.206 1.01 1130.60ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 175.06ns 174.819 1.00 597.87ns
sending of values from observable via take to subscriber 3.50ns 3.51649 1.00 3.47ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 206.11ns 206.072 1.00 648.59ns
sending of values from observable via take_last to subscriber 3.04ns 3.05785 0.99 6.20ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 1074.05ns 1063.26 1.01 1639.70ns
sending of values from observable via take_until to subscriber 10.73ns 10.2593 1.05 1.80ns

timeout

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
timeout construction from observable via dot + subscribe with run_loop 940.65ns 932.656 1.01 16740.90ns
sending of values from observable via timeout to subscriber with unreachable timeout interval with run_loop 58.19ns 58.1104 1.00 15423.20ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 23.07ns 23.4711 0.98 185.93ns
re-schedule 10 times 51.12ns 51.1152 1.00 222.59ns
recursively schedule 10 times 1448.58ns 1449.44 1.00 8693.87ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 2124.54ns 2136.66 0.99 3239.63ns
sending of values from observable via window to subscriber 590.73ns 587.123 1.01 423.75ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 1087.69ns 1089.8 1.00 1451.12ns
sending of values from observable via with_latest_from to subscriber 26.78ns 26.7952 1.00 4.38ns

ci-windows

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 1.34ns 1.99653 0.67 0.59ns
Dynamic observable construction 72.15ns 97.2211 0.74 107.17ns
Specific observable construction + as_dynamic 73.44ns 98.1449 0.75 107.81ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 127.33ns 172.347 0.74 1094.26ns
Specific observable lift dynamic observer 157.97ns 199.774 0.79 1142.32ns
Dynamic observable lift specific observer 253.92ns 353.845 0.72 1259.40ns
Dynamic observable lift dynamic observer 236.79ns 283.069 0.84 1156.90ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 97.31ns 134.95 0.72 1039.17ns
Specific observable subscribe dynamic observer 130.74ns 153.24 0.85 1041.65ns
Dynamic observable subscribe specific observer 230.40ns 274.156 0.84 1196.67ns
Dynamic observable subscribe dynamic observer 157.38ns 211.906 0.74 1111.22ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 111.84ns 120.127 0.93 1048.04ns
Dynamic observable subscribe lambda 228.70ns 287.989 0.79 1202.14ns
Specific observable subscribe lambda without subscription 97.90ns 137.175 0.71 1053.83ns
Dynamic observable subscribe lambda without subscription 228.67ns 253.454 0.90 1211.62ns
Specific observable subscribe specific subscriber 26.91ns 36.7012 0.73 766.56ns
Dynamic observable subscribe specific subscriber 150.36ns 166.222 0.90 922.04ns
Specific observable subscribe dynamic observer 30.47ns 38.0868 0.80 785.00ns
Dynamic observable subscribe dynamic observer 69.73ns 101.038 0.69 797.63ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 1.50ns 1.8371 0.82 1.34ns
Dynamic observer construction 83.08ns 102.703 0.81 100.57ns
Specific observer construction + as_dynamic 95.79ns 100.729 0.95 99.07ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.57ns 0.78842 0.73 0.57ns
Dynamic observer OnNext 2.01ns 2.37302 0.85 1.79ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 74.05ns 95.4735 0.78 313.34ns
Make copy of subscriber 16.71ns 21.9245 0.76 30.05ns
Transform subsriber to dynamic 86.13ns 99.585 0.86 134.06ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 74.30ns 98.5847 0.75 313.34ns
composite_subscription add 63.48ns 90.8222 0.70 133.59ns
composite_subscription unsubscribe 58.40ns 71.3898 0.82 109.96ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 351.16ns 403.262 0.87 3990.29ns
sending of values from observable via buffer to subscriber 6.25ns 7.98966 0.78 81.65ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 236.93ns 317.675 0.75 1569.19ns
long stateful chain creation + subscribe 581.59ns 770.5 0.75 2887.75ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 1605.50ns 1994.0 0.81 2690.88ns
sending of values from observable via combine_latest to subscriber 47.15ns 82.7627 0.57 3.95ns

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 2426.78ns 3395.75 0.71 9432.00ns
concat_with 4105.88ns 4079.12 1.01 10302.70ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 184.63ns 207.389 0.89 924.78ns
sending of values from observable via distinct_until_changed to subscriber 4.44ns 6.11759 0.73 3.45ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 132.22ns 156.291 0.85 2353.91ns
sending of values from observable via first to subscriber 2.35ns 3.5274 0.67 1.57ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 63.18ns 81.9252 0.77 2125.55ns
error 118.11ns 142.091 0.83 2223.82ns
never 31.82ns 37.8715 0.84 800.30ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 135.00ns 158.638 0.85 2207.64ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 1.54ns 1.46847 1.05 370.58ns
re-schedule 10 times 86.45ns 123.306 0.70 390.60ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 58.18ns 79.0476 0.74 2150.55ns
just send variadic 103.13ns 119.691 0.86 2223.82ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 197.68ns 267.218 0.74 1291.28ns
sending of values from observable via last to subscriber 3.20ns 4.28031 0.75 2.94ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 88.47ns 93.3036 0.95 1166.43ns
sending of values from observable via map to subscriber 3.51ns 3.89211 0.90 6.00ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 2350.60ns 3061.56 0.77 9709.67ns
merge_with 3312.67ns 3944.12 0.84 10370.70ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 555.19ns 755.333 0.74 5264.80ns
sending of values from observable via observe_on to subscriber 52.95ns 77.4387 0.68 752.00ns

on_error_resume_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_error_resume_next construction from observable via dot + subscribe 558.24ns 756.611 0.74 1627.92ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 17.55ns 23.7781 0.74 29.38ns
on_error 2.45ns 3.434 0.71 16.34ns
on_completed 2.68ns 2.61594 1.02 1.20ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 315.73ns 520.283 0.61 570.30ns
get_observable 23.07ns 34.1569 0.68 147.07ns
get_subscriber 44.71ns 60.0022 0.75 86.89ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 5373.25ns 8462.33 0.63 9988.00ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 182.88ns 218.633 0.84 1106.91ns
sending of values from observable via scan to subscriber 4.75ns 6.33853 0.75 8.50ns

single-threaded locks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no-lock increment 2.17ns 2.98195 0.73 .
mutex lock increment 25.77ns 30.802 0.84 .
spin-lock increment 7.97ns 12.9163 0.62 .

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 176.71ns 285.834 0.62 1329.93ns
sending of values from observable via skip to subscriber 2.97ns 4.60632 0.64 3.73ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 3124.57ns 3838.0 0.81 10622.30ns
sending of values from observable via switch_on_next to subscriber 762.14ns 1003.71 0.76 2739.30ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 197.02ns 280.976 0.70 1946.67ns
sending of values from observable via take to subscriber 5.19ns 6.10523 0.85 5.59ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 322.75ns 379.115 0.85 2735.11ns
sending of values from observable via take_last to subscriber 5.03ns 5.08641 0.99 20.22ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 1580.18ns 1897.29 0.83 4651.33ns
sending of values from observable via take_until to subscriber 11.61ns 13.4299 0.86 4.74ns

timeout

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
timeout construction from observable via dot + subscribe with run_loop 1181.94ns 1606.56 0.74 5269.50ns
sending of values from observable via timeout to subscriber with unreachable timeout interval with run_loop 49.35ns 61.656 0.80 1436.00ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 19.10ns 22.2782 0.86 540.04ns
re-schedule 10 times 107.77ns 145.201 0.74 583.57ns
recursively schedule 10 times 2324.60ns 3091.0 0.75 16493.00ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 2932.89ns 3305.56 0.89 8977.00ns
sending of values from observable via window to subscriber 893.50ns 934.067 0.96 1433.00ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 1754.00ns 2582.64 0.68 3329.33ns
sending of values from observable via with_latest_from to subscriber 33.60ns 38.1141 0.88 5.99ns

Please sign in to comment.