Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

timeout operator #537

Merged
merged 9 commits into from
Mar 3, 2024
Merged

timeout operator #537

merged 9 commits into from
Mar 3, 2024

Conversation

victimsnino
Copy link
Owner

No description provided.

Copy link
Contributor

github-actions bot commented Feb 27, 2024

BENCHMARK RESULTS (AUTOGENERATED)

ci-ubuntu-gcc

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 309.57 ns 2.16 ns 2.16 ns 1.00
Subscribe empty callbacks to empty observable via pipe operator 305.43 ns 2.16 ns 2.16 ns 1.00

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 692.99 ns 0.62 ns 0.62 ns 1.00
from array of 1 - create + subscribe + current_thread 1027.11 ns 4.94 ns 4.63 ns 1.07
concat_as_source of just(1 immediate) create + subscribe 2233.78 ns 112.60 ns 118.76 ns 0.95
defer from array of 1 - defer + create + subscribe + immediate 735.18 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 2095.77 ns 59.23 ns 59.23 ns 1.00
interval - interval + take(3) + subscribe + current_thread 2958.58 ns 32.71 ns 32.73 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1066.46 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 865.93 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 974.13 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 835.34 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+first()+subscribe 1231.53 ns 0.62 ns 0.62 ns 1.00
immediate_just(1,2)+last()+subscribe 948.31 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 1106.53 ns 17.91 ns 17.91 ns 1.00

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 261.99 ns 2.16 ns 2.16 ns 1.00
current_thread scheduler create worker + schedule 370.45 ns 6.79 ns 6.79 ns 1.00
current_thread scheduler create worker + schedule + recursive schedule 825.02 ns 64.67 ns 64.39 ns 1.00

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 858.27 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 903.18 ns 0.31 ns 0.31 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 2293.93 ns 158.63 ns 159.87 ns 0.99
immediate_just+buffer(2)+subscribe 1519.17 ns 13.59 ns 13.58 ns 1.00
immediate_just+window(2)+subscribe + subscsribe inner 2397.33 ns 1061.49 ns 1098.63 ns 0.97

Conditional Operators

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

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 1954.75 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 3389.58 ns 230.99 ns 176.25 ns 1.31
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3636.30 ns 163.94 ns 169.08 ns 0.97
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 146.52 ns 134.76 ns 1.09
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 3505.44 ns 1030.63 ns 1009.40 ns 1.02
immediate_just(1) + zip(immediate_just(2)) + subscribe 2100.69 ns 212.20 ns 211.36 ns 1.00

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 34.53 ns 12.03 ns 11.74 ns 1.02

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1325.00 ns 15.75 ns 15.74 ns 1.00
basic sample with immediate scheduler 2185.27 ns 7.19 ns 5.55 ns 1.30

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 905.87 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 1065.84 ns 124.22 ns 125.19 ns 0.99

ci-macos

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 1142.62 ns 5.38 ns 5.35 ns 1.00
Subscribe empty callbacks to empty observable via pipe operator 1087.06 ns 5.57 ns 5.33 ns 1.05

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 2385.46 ns 0.45 ns 0.30 ns 1.51
from array of 1 - create + subscribe + current_thread 2925.26 ns 8.95 ns 26.56 ns 0.34
concat_as_source of just(1 immediate) create + subscribe 7141.31 ns 402.81 ns 380.21 ns 1.06
defer from array of 1 - defer + create + subscribe + immediate 2419.32 ns 0.29 ns 0.27 ns 1.09
interval - interval + take(3) + subscribe + immediate 6684.03 ns 92.48 ns 133.01 ns 0.70
interval - interval + take(3) + subscribe + current_thread 8262.84 ns 62.13 ns 123.01 ns 0.51

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 3751.33 ns 0.30 ns 0.29 ns 1.03
immediate_just+filter(true)+subscribe 2533.57 ns 0.28 ns 0.26 ns 1.05
immediate_just(1,2)+skip(1)+subscribe 3430.15 ns 0.28 ns 0.28 ns 1.03
immediate_just(1,1,2)+distinct_until_changed()+subscribe 2684.00 ns 0.56 ns 0.60 ns 0.94
immediate_just(1,2)+first()+subscribe 4258.86 ns 0.28 ns 0.27 ns 1.04
immediate_just(1,2)+last()+subscribe 3228.40 ns 0.28 ns 0.28 ns 1.01
immediate_just+take_last(1)+subscribe 3807.92 ns 79.76 ns 92.42 ns 0.86

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 1026.47 ns 5.98 ns 4.58 ns 1.31
current_thread scheduler create worker + schedule 1486.53 ns 16.68 ns 44.61 ns 0.37
current_thread scheduler create worker + schedule + recursive schedule 2464.13 ns 167.87 ns 266.49 ns 0.63

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 2675.56 ns 0.30 ns 0.28 ns 1.06
immediate_just+scan(10, std::plus)+subscribe 3024.40 ns 0.57 ns 0.57 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 8030.33 ns 507.87 ns 522.72 ns 0.97
immediate_just+buffer(2)+subscribe 3097.74 ns 75.70 ns 83.19 ns 0.91
immediate_just+window(2)+subscribe + subscsribe inner 7019.88 ns 3121.75 ns 2998.12 ns 1.04

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 2842.59 ns - - 0.00
immediate_just+take_while(true)+subscribe 2717.57 ns 0.37 ns 0.28 ns 1.32

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 6190.27 ns 0.28 ns 0.29 ns 0.97

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 9728.38 ns 558.92 ns 545.31 ns 1.02
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 11018.72 ns 553.48 ns 538.82 ns 1.03
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 526.96 ns 579.52 ns 0.91
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 10416.21 ns 2448.98 ns 2365.35 ns 1.04
immediate_just(1) + zip(immediate_just(2)) + subscribe 6380.80 ns 1014.62 ns 1077.61 ns 0.94

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 98.33 ns 63.51 ns 63.68 ns 1.00

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 3948.75 ns 51.23 ns 131.85 ns 0.39
basic sample with immediate scheduler 3544.80 ns 6.43 ns 19.65 ns 0.33

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 2908.14 ns 0.28 ns 0.32 ns 0.89

Error Handling Operators

name rxcpp rpp prev rpp ratio
create(on_next(1), on_error())+on_error_resume_next(immediate_just(2)))+subscribe 8295.94 ns 4998.90 ns 5315.88 ns 0.94

ci-ubuntu-clang

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 278.06 ns 0.88 ns 1.54 ns 0.57
Subscribe empty callbacks to empty observable via pipe operator 272.51 ns 0.88 ns 1.54 ns 0.57

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 629.24 ns 0.31 ns 0.41 ns 0.74
from array of 1 - create + subscribe + current_thread 803.28 ns 5.56 ns 5.55 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 1963.54 ns 112.91 ns 112.51 ns 1.00
defer from array of 1 - defer + create + subscribe + immediate 589.83 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 1643.61 ns 58.31 ns 58.31 ns 1.00
interval - interval + take(3) + subscribe + current_thread 2150.28 ns 31.50 ns 31.50 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 922.82 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 673.46 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 850.14 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 704.43 ns 0.62 ns 0.62 ns 1.00
immediate_just(1,2)+first()+subscribe 1136.35 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+last()+subscribe 749.66 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 948.78 ns 0.31 ns 0.31 ns 1.00

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 197.05 ns 0.88 ns 1.54 ns 0.57
current_thread scheduler create worker + schedule 310.16 ns 5.58 ns 5.58 ns 1.00
current_thread scheduler create worker + schedule + recursive schedule 614.75 ns 61.02 ns 58.73 ns 1.04

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 684.74 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 720.52 ns 0.31 ns 0.31 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 1791.71 ns 121.12 ns 122.85 ns 0.99
immediate_just+buffer(2)+subscribe 1331.29 ns 13.59 ns 14.50 ns 0.94
immediate_just+window(2)+subscribe + subscsribe inner 2195.54 ns 798.89 ns 806.35 ns 0.99

Conditional Operators

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

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 1627.12 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 2598.05 ns 126.70 ns 126.90 ns 1.00
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 2990.13 ns 121.13 ns 122.14 ns 0.99
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 112.51 ns 111.75 ns 1.01
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 3055.13 ns 732.27 ns 724.38 ns 1.01
immediate_just(1) + zip(immediate_just(2)) + subscribe 1773.02 ns 174.33 ns 175.27 ns 0.99

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 26.22 ns 14.19 ns 14.24 ns 1.00

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1088.11 ns 13.58 ns 13.58 ns 1.00
basic sample with immediate scheduler 1088.38 ns 5.86 ns 5.86 ns 1.00

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 738.66 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 846.39 ns 126.55 ns 126.15 ns 1.00

ci-windows

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 583.40 ns 4.01 ns 4.94 ns 0.81
Subscribe empty callbacks to empty observable via pipe operator 601.71 ns 4.01 ns 4.94 ns 0.81

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 1186.73 ns 5.55 ns 5.55 ns 1.00
from array of 1 - create + subscribe + current_thread 1446.98 ns 19.15 ns 18.53 ns 1.03
concat_as_source of just(1 immediate) create + subscribe 4773.91 ns 180.65 ns 172.34 ns 1.05
defer from array of 1 - defer + create + subscribe + immediate 1211.53 ns 5.86 ns 5.86 ns 1.00
interval - interval + take(3) + subscribe + immediate 3100.30 ns 134.33 ns 133.69 ns 1.00
interval - interval + take(3) + subscribe + current_thread 3481.71 ns 57.84 ns 65.38 ns 0.88

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1853.72 ns 12.88 ns 12.88 ns 1.00
immediate_just+filter(true)+subscribe 1729.77 ns 12.38 ns 11.71 ns 1.06
immediate_just(1,2)+skip(1)+subscribe 1769.78 ns 13.17 ns 13.17 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 1395.26 ns 15.94 ns 15.86 ns 1.00
immediate_just(1,2)+first()+subscribe 2100.00 ns 12.63 ns 12.95 ns 0.98
immediate_just(1,2)+last()+subscribe 1505.11 ns 14.11 ns 14.10 ns 1.00
immediate_just+take_last(1)+subscribe 2053.22 ns 60.51 ns 60.47 ns 1.00

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 496.77 ns 6.18 ns 6.17 ns 1.00
current_thread scheduler create worker + schedule 671.66 ns 18.20 ns 18.22 ns 1.00
current_thread scheduler create worker + schedule + recursive schedule 1098.61 ns 108.30 ns 112.00 ns 0.97

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 1333.75 ns 12.25 ns 11.18 ns 1.10
immediate_just+scan(10, std::plus)+subscribe 1440.46 ns 21.27 ns 21.58 ns 0.99
immediate_just+flat_map(immediate_just(v*2))+subscribe 3926.34 ns 235.55 ns 255.66 ns 0.92
immediate_just+buffer(2)+subscribe 2354.09 ns 58.70 ns 58.88 ns 1.00
immediate_just+window(2)+subscribe + subscsribe inner 4084.86 ns 1550.43 ns 1580.42 ns 0.98

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 1326.74 ns 11.45 ns 11.46 ns 1.00
immediate_just+take_while(true)+subscribe 1343.73 ns 12.38 ns 11.73 ns 1.06

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 4181.15 ns 8.02 ns 8.02 ns 1.00

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 5158.69 ns 248.16 ns 246.71 ns 1.01
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 6555.75 ns 234.48 ns 242.73 ns 0.97
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 238.96 ns 236.45 ns 1.01
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 6247.54 ns 948.40 ns 966.26 ns 0.98
immediate_just(1) + zip(immediate_just(2)) + subscribe 3929.57 ns 526.52 ns 533.70 ns 0.99

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 36.83 ns 25.90 ns 25.90 ns 1.00

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1901.54 ns 59.54 ns 59.39 ns 1.00
basic sample with immediate scheduler 1896.05 ns 38.25 ns 38.27 ns 1.00

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 1476.62 ns 17.75 ns 19.94 ns 0.89

Error Handling Operators

name rxcpp rpp prev rpp ratio
create(on_next(1), on_error())+on_error_resume_next(immediate_just(2)))+subscribe 1965.64 ns 340.71 ns 343.41 ns 0.99

@victimsnino victimsnino marked this pull request as ready for review March 3, 2024 10:21
Copy link

sonarcloud bot commented Mar 3, 2024

@victimsnino victimsnino merged commit 581d6ea into v2 Mar 3, 2024
27 checks passed
@victimsnino victimsnino deleted the feature/timeout branch March 3, 2024 16:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants