Skip to content

Commit

Permalink
one more
Browse files Browse the repository at this point in the history
  • Loading branch information
victimsnino committed Oct 13, 2024
1 parent 01ccaf0 commit 6762517
Showing 1 changed file with 0 additions and 1 deletion.
1 change: 0 additions & 1 deletion Readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@ Also RPP supports out of box:
- QT as rppqt module. Checkout [RPPQT reference](https://victimsnino.github.io/ReactivePlusPlus/v2/docs/html/group__rppqt.html).
- gRPC as rppgrpc module. Checkout [RPPgRPC reference](https://victimsnino.github.io/ReactivePlusPlus/v2/docs/html/group__rppgrpc.html).
- boost::asio as rppasio module. Checkout [RPPASIO reference](https://victimsnino.github.io/ReactivePlusPlus/v2/docs/html/group__rppasio.html).
```
## What about existing Reactive Extension libraries for C++?
Expand Down

1 comment on commit 6762517

@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-gcc

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 301.06 ns 2.17 ns 2.16 ns 1.00
Subscribe empty callbacks to empty observable via pipe operator 305.39 ns 2.16 ns 2.16 ns 1.00

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 688.62 ns 0.31 ns 0.31 ns 1.00
from array of 1 - create + subscribe + current_thread 1030.40 ns 3.71 ns 3.71 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 2255.41 ns 142.99 ns 143.20 ns 1.00
defer from array of 1 - defer + create + subscribe + immediate 735.39 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 2165.48 ns 59.19 ns 59.19 ns 1.00
interval - interval + take(3) + subscribe + current_thread 3004.44 ns 32.43 ns 32.43 ns 1.00
from array of 1 - create + as_blocking + subscribe + new_thread 30051.97 ns 27668.33 ns 28058.74 ns 0.99
from array of 1000 - create + as_blocking + subscribe + new_thread 38386.00 ns 48485.96 ns 52370.85 ns 0.93
concat_as_source of just(1 immediate) and just(1,2 immediate)create + subscribe 3427.17 ns 216.05 ns 219.08 ns 0.99

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1111.35 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 851.02 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 990.12 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 937.41 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+first()+subscribe 1247.98 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+last()+subscribe 910.70 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 1120.77 ns 18.52 ns 18.53 ns 1.00
immediate_just(1,2,3)+element_at(1)+subscribe 824.17 ns 0.31 ns 0.31 ns 0.99

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 263.05 ns 2.16 ns 2.16 ns 1.00
current_thread scheduler create worker + schedule 367.04 ns 5.86 ns 5.87 ns 1.00
current_thread scheduler create worker + schedule + recursive schedule 816.89 ns 55.65 ns 55.59 ns 1.00

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 850.12 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 902.75 ns 0.31 ns 0.31 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 2379.91 ns 192.38 ns 227.26 ns 0.85
immediate_just+buffer(2)+subscribe 1544.29 ns 14.20 ns 14.21 ns 1.00
immediate_just+window(2)+subscribe + subscsribe inner 2379.85 ns 1361.87 ns 1427.61 ns 0.95

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 825.62 ns - - 0.00
immediate_just+take_while(true)+subscribe 831.21 ns 0.31 ns 0.31 ns 1.00

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 2000.54 ns 0.31 ns 0.31 ns 1.00

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 3447.22 ns 236.24 ns 324.29 ns 0.73
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3611.10 ns 193.90 ns 283.41 ns 0.68
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 179.16 ns 188.77 ns 0.95
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 3568.84 ns 1295.05 ns 1331.54 ns 0.97
immediate_just(1) + zip(immediate_just(2)) + subscribe 2146.55 ns 240.55 ns 398.25 ns 0.60

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 34.47 ns 14.63 ns 14.64 ns 1.00
subscribe 100 observers to publish_subject 198185.17 ns 15717.68 ns 28244.28 ns 0.56
100 on_next to 100 observers to publish_subject 26757.08 ns 17102.51 ns 17099.63 ns 1.00

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1406.83 ns 12.65 ns 12.66 ns 1.00
basic sample with immediate scheduler 1375.22 ns 5.55 ns 5.58 ns 0.99

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 908.81 ns 0.31 ns 0.31 ns 1.00

Error Handling Operators

name rxcpp rpp prev rpp ratio
create(on_next(1), on_error())+on_error_resume_next(immediate_just(2)))+subscribe 2052.42 ns 945.12 ns 917.44 ns 1.03
create(on_error())+retry(1)+subscribe 585.49 ns 121.19 ns 121.66 ns 1.00

ci-macos

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 1212.65 ns 4.07 ns 3.90 ns 1.04
Subscribe empty callbacks to empty observable via pipe operator 986.10 ns 4.95 ns 3.90 ns 1.27

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 1927.44 ns 0.23 ns 0.23 ns 1.00
from array of 1 - create + subscribe + current_thread 2418.72 ns 33.19 ns 33.57 ns 0.99
concat_as_source of just(1 immediate) create + subscribe 5399.44 ns 424.09 ns 427.30 ns 0.99
defer from array of 1 - defer + create + subscribe + immediate 1961.18 ns 0.23 ns 0.23 ns 1.00
interval - interval + take(3) + subscribe + immediate 5029.13 ns 113.99 ns 114.79 ns 0.99
interval - interval + take(3) + subscribe + current_thread 6055.87 ns 94.93 ns 92.40 ns 1.03
from array of 1 - create + as_blocking + subscribe + new_thread 87560.23 ns 85401.17 ns 85944.67 ns 0.99
from array of 1000 - create + as_blocking + subscribe + new_thread 89432.00 ns 90987.27 ns 89308.77 ns 1.02
concat_as_source of just(1 immediate) and just(1,2 immediate)create + subscribe 8179.55 ns 586.80 ns 594.53 ns 0.99

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 2864.05 ns 0.23 ns 0.23 ns 1.03
immediate_just+filter(true)+subscribe 2109.17 ns 0.23 ns 0.22 ns 1.05
immediate_just(1,2)+skip(1)+subscribe 2773.00 ns 0.23 ns 0.22 ns 1.05
immediate_just(1,1,2)+distinct_until_changed()+subscribe 2081.97 ns 0.47 ns 0.45 ns 1.05
immediate_just(1,2)+first()+subscribe 3191.40 ns 0.23 ns 0.22 ns 1.05
immediate_just(1,2)+last()+subscribe 2389.22 ns 0.23 ns 0.22 ns 1.05
immediate_just+take_last(1)+subscribe 3007.67 ns 0.23 ns 0.22 ns 1.05
immediate_just(1,2,3)+element_at(1)+subscribe 2127.93 ns 0.23 ns 0.22 ns 1.05

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 852.70 ns 4.17 ns 4.07 ns 1.02
current_thread scheduler create worker + schedule 1196.38 ns 36.44 ns 35.70 ns 1.02
current_thread scheduler create worker + schedule + recursive schedule 1986.60 ns 204.14 ns 197.80 ns 1.03

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 2115.22 ns 4.22 ns 4.43 ns 0.95
immediate_just+scan(10, std::plus)+subscribe 2359.78 ns 0.47 ns 0.47 ns 1.01
immediate_just+flat_map(immediate_just(v*2))+subscribe 5332.39 ns 511.30 ns 494.83 ns 1.03
immediate_just+buffer(2)+subscribe 2500.26 ns 65.49 ns 63.97 ns 1.02
immediate_just+window(2)+subscribe + subscsribe inner 5347.99 ns 2385.11 ns 2332.20 ns 1.02

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 2114.71 ns - - 0.00
immediate_just+take_while(true)+subscribe 2144.14 ns 0.27 ns 0.23 ns 1.17

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 4927.25 ns 5.13 ns 4.68 ns 1.10

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 7471.91 ns 594.58 ns 599.53 ns 0.99
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 8427.18 ns 511.42 ns 512.45 ns 1.00
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 581.95 ns 578.67 ns 1.01
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 7930.15 ns 1910.85 ns 1956.45 ns 0.98
immediate_just(1) + zip(immediate_just(2)) + subscribe 5438.76 ns 1071.97 ns 896.42 ns 1.20

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 76.69 ns 48.58 ns 48.90 ns 0.99
subscribe 100 observers to publish_subject 348028.67 ns 40808.25 ns 40794.68 ns 1.00
100 on_next to 100 observers to publish_subject 53034.45 ns 18910.95 ns 18748.55 ns 1.01

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 2789.57 ns 67.27 ns 67.35 ns 1.00
basic sample with immediate scheduler 2784.51 ns 18.73 ns 21.00 ns 0.89

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 2399.97 ns 0.23 ns 0.23 ns 1.00

Error Handling Operators

name rxcpp rpp prev rpp ratio
create(on_next(1), on_error())+on_error_resume_next(immediate_just(2)))+subscribe 6481.60 ns 3875.22 ns 3930.98 ns 0.99
create(on_error())+retry(1)+subscribe 1803.69 ns 362.21 ns 364.17 ns 0.99

ci-ubuntu-clang

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 264.72 ns 0.88 ns 1.56 ns 0.56
Subscribe empty callbacks to empty observable via pipe operator 266.10 ns 0.88 ns 1.57 ns 0.56

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 560.49 ns 0.36 ns 0.37 ns 0.96
from array of 1 - create + subscribe + current_thread 788.58 ns 4.02 ns 4.01 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 2349.35 ns 185.68 ns 186.01 ns 1.00
defer from array of 1 - defer + create + subscribe + immediate 782.55 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 2203.22 ns 58.26 ns 58.27 ns 1.00
interval - interval + take(3) + subscribe + current_thread 3163.82 ns 30.88 ns 31.07 ns 0.99
from array of 1 - create + as_blocking + subscribe + new_thread 29870.42 ns 28060.17 ns 28609.17 ns 0.98
from array of 1000 - create + as_blocking + subscribe + new_thread 39676.36 ns 33336.68 ns 37373.24 ns 0.89
concat_as_source of just(1 immediate) and just(1,2 immediate)create + subscribe 3663.79 ns 310.11 ns 304.62 ns 1.02

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1133.63 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 843.09 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 1071.08 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 866.01 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+first()+subscribe 1375.70 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+last()+subscribe 988.94 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 1222.17 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2,3)+element_at(1)+subscribe 863.99 ns 0.31 ns 0.31 ns 1.00

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 277.91 ns 0.88 ns 1.57 ns 0.56
current_thread scheduler create worker + schedule 388.99 ns 4.32 ns 4.32 ns 1.00
current_thread scheduler create worker + schedule + recursive schedule 847.92 ns 56.05 ns 55.97 ns 1.00

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 831.80 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 961.69 ns 0.31 ns 0.31 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 2215.89 ns 231.17 ns 228.49 ns 1.01
immediate_just+buffer(2)+subscribe 1580.02 ns 13.58 ns 13.59 ns 1.00
immediate_just+window(2)+subscribe + subscsribe inner 2433.44 ns 921.75 ns 933.18 ns 0.99

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 828.21 ns - - 0.00
immediate_just+take_while(true)+subscribe 844.38 ns 0.31 ns 0.31 ns 1.00

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 2011.81 ns 0.32 ns 0.31 ns 1.05

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 3269.52 ns 293.24 ns 291.58 ns 1.01
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3705.85 ns 218.24 ns 215.90 ns 1.01
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 199.13 ns 197.61 ns 1.01
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 3375.26 ns 841.87 ns 844.92 ns 1.00
immediate_just(1) + zip(immediate_just(2)) + subscribe 2224.58 ns 197.05 ns 194.73 ns 1.01

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 52.24 ns 18.30 ns 18.15 ns 1.01
subscribe 100 observers to publish_subject 212902.17 ns 15944.19 ns 15959.30 ns 1.00
100 on_next to 100 observers to publish_subject 45817.96 ns 20721.73 ns 20939.42 ns 0.99

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1305.63 ns 11.42 ns 11.42 ns 1.00
basic sample with immediate scheduler 1293.38 ns 6.17 ns 6.17 ns 1.00

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 985.75 ns 0.31 ns 0.31 ns 1.00

Error Handling Operators

name rxcpp rpp prev rpp ratio
create(on_next(1), on_error())+on_error_resume_next(immediate_just(2)))+subscribe 2157.30 ns 1010.16 ns 1001.52 ns 1.01
create(on_error())+retry(1)+subscribe 646.82 ns 157.62 ns 157.42 ns 1.00

ci-windows

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 787.98 ns 4.02 ns 4.94 ns 0.81
Subscribe empty callbacks to empty observable via pipe operator 789.29 ns 4.01 ns 4.94 ns 0.81

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 1422.84 ns 9.63 ns 9.71 ns 0.99
from array of 1 - create + subscribe + current_thread 1452.16 ns 17.92 ns 17.70 ns 1.01
concat_as_source of just(1 immediate) create + subscribe 4113.41 ns 231.51 ns 238.12 ns 0.97
defer from array of 1 - defer + create + subscribe + immediate 1226.44 ns 9.42 ns 9.41 ns 1.00
interval - interval + take(3) + subscribe + immediate 3397.12 ns 145.38 ns 144.55 ns 1.01
interval - interval + take(3) + subscribe + current_thread 3435.12 ns 64.76 ns 66.44 ns 0.97
from array of 1 - create + as_blocking + subscribe + new_thread 127155.56 ns 122100.00 ns 114110.00 ns 1.07
from array of 1000 - create + as_blocking + subscribe + new_thread 135555.56 ns 137987.50 ns 131487.50 ns 1.05
concat_as_source of just(1 immediate) and just(1,2 immediate)create + subscribe 5360.37 ns 308.25 ns 314.07 ns 0.98

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1840.11 ns 25.30 ns 24.99 ns 1.01
immediate_just+filter(true)+subscribe 1313.12 ns 24.35 ns 24.05 ns 1.01
immediate_just(1,2)+skip(1)+subscribe 1729.07 ns 24.06 ns 23.43 ns 1.03
immediate_just(1,1,2)+distinct_until_changed()+subscribe 1855.76 ns 28.99 ns 26.24 ns 1.10
immediate_just(1,2)+first()+subscribe 2093.82 ns 22.82 ns 23.74 ns 0.96
immediate_just(1,2)+last()+subscribe 1785.43 ns 24.06 ns 24.67 ns 0.98
immediate_just+take_last(1)+subscribe 2039.29 ns 77.89 ns 69.24 ns 1.13
immediate_just(1,2,3)+element_at(1)+subscribe 1337.11 ns 27.49 ns 26.79 ns 1.03

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 481.46 ns 6.17 ns 6.17 ns 1.00
current_thread scheduler create worker + schedule 656.17 ns 13.92 ns 14.02 ns 0.99
current_thread scheduler create worker + schedule + recursive schedule 1092.98 ns 103.54 ns 106.13 ns 0.98

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 1304.25 ns 24.35 ns 24.35 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 1443.18 ns 26.82 ns 26.51 ns 1.01
immediate_just+flat_map(immediate_just(v*2))+subscribe 3458.81 ns 264.76 ns 272.12 ns 0.97
immediate_just+buffer(2)+subscribe 2319.73 ns 68.84 ns 68.87 ns 1.00
immediate_just+window(2)+subscribe + subscsribe inner 4047.45 ns 1299.67 ns 1391.95 ns 0.93

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 1326.94 ns 23.12 ns 23.14 ns 1.00
immediate_just+take_while(true)+subscribe 1320.00 ns 24.35 ns 24.05 ns 1.01

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 3122.49 ns 11.10 ns 11.10 ns 1.00

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 5054.87 ns 305.79 ns 306.30 ns 1.00
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 5356.54 ns 259.20 ns 273.33 ns 0.95
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 303.28 ns 307.83 ns 0.99
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 5240.51 ns 938.92 ns 965.72 ns 0.97
immediate_just(1) + zip(immediate_just(2)) + subscribe 3611.15 ns 571.07 ns 592.47 ns 0.96

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 36.60 ns 20.14 ns 20.06 ns 1.00
subscribe 100 observers to publish_subject 262600.00 ns 27870.73 ns 30697.14 ns 0.91
100 on_next to 100 observers to publish_subject 55026.32 ns 32674.19 ns 32648.39 ns 1.00

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1855.82 ns 102.19 ns 101.84 ns 1.00
basic sample with immediate scheduler 2179.62 ns 73.85 ns 72.11 ns 1.02

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 1448.93 ns 24.97 ns 24.66 ns 1.01

Error Handling Operators

name rxcpp rpp prev rpp ratio
create(on_next(1), on_error())+on_error_resume_next(immediate_just(2)))+subscribe 2144.88 ns 242.48 ns 249.92 ns 0.97
create(on_error())+retry(1)+subscribe 1689.57 ns 189.74 ns 192.36 ns 0.99

Please sign in to comment.