Skip to content

Add on_error_resume_next operator#528

Merged
AlexInLog merged 3 commits into
AlexInLog:v2from
CorentinBT:on_error_resume_next
Feb 18, 2024
Merged

Add on_error_resume_next operator#528
AlexInLog merged 3 commits into
AlexInLog:v2from
CorentinBT:on_error_resume_next

Conversation

@CorentinBT

Copy link
Copy Markdown
Contributor

No description provided.

@github-actions

github-actions Bot commented Feb 18, 2024

Copy link
Copy Markdown
Contributor

BENCHMARK RESULTS (AUTOGENERATED)

ci-ubuntu-gcc

General

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

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 695.13 ns 0.31 ns 0.62 ns 0.50
from array of 1 - create + subscribe + current_thread 1034.78 ns 5.25 ns 5.25 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 2302.46 ns 110.80 ns 121.85 ns 0.91
defer from array of 1 - defer + create + subscribe + immediate 736.98 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 2121.30 ns 58.00 ns 58.01 ns 1.00
interval - interval + take(3) + subscribe + current_thread 3086.20 ns 32.12 ns 32.11 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1121.36 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 896.10 ns 0.31 ns 0.32 ns 0.96
immediate_just(1,2)+skip(1)+subscribe 1014.88 ns 0.31 ns 0.32 ns 0.97
immediate_just(1,1,2)+distinct_until_changed()+subscribe 954.16 ns 0.31 ns 0.32 ns 0.98
immediate_just(1,2)+first()+subscribe 1275.31 ns 0.62 ns 0.32 ns 1.94
immediate_just(1,2)+last()+subscribe 1006.77 ns 0.31 ns 0.32 ns 0.98
immediate_just+take_last(1)+subscribe 1167.33 ns 18.22 ns 18.52 ns 0.98

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 275.66 ns 2.16 ns 2.16 ns 1.00
current_thread scheduler create worker + schedule 364.97 ns 7.41 ns 7.41 ns 1.00
current_thread scheduler create worker + schedule + recursive schedule 815.10 ns 64.22 ns 65.58 ns 0.98

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 846.17 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 912.85 ns 0.31 ns 0.31 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 2370.64 ns 161.85 ns 176.43 ns 0.92
immediate_just+buffer(2)+subscribe 1599.22 ns 14.52 ns 13.89 ns 1.05
immediate_just+window(2)+subscribe + subscsribe inner 2460.96 ns 1099.43 ns 1202.84 ns 0.91

Conditional Operators

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

Utility Operators

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

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 3416.23 ns 184.46 ns 199.58 ns 0.92
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3624.54 ns 172.19 ns 171.54 ns 1.00
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 141.90 ns 134.21 ns 1.06
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 3543.25 ns 967.34 ns 966.65 ns 1.00
immediate_just(1) + zip(immediate_just(2)) + subscribe 2158.92 ns 214.15 ns 212.65 ns 1.01

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 34.56 ns 11.71 ns 11.80 ns 0.99

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1333.71 ns 16.37 ns 16.66 ns 0.98
basic sample with immediate scheduler 1422.88 ns 5.55 ns 7.71 ns 0.72

Aggregating Operators

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

Error Handling Operators

name rxcpp rpp prev rpp ratio
create(on_next(1), on_error())+on_error_resume_next(immediate_just(2)))+subscribe 1034.16 ns 121.62 ns - 0.00

ci-macos

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 992.74 ns 3.94 ns 3.98 ns 0.99
Subscribe empty callbacks to empty observable via pipe operator 998.68 ns 3.90 ns 3.86 ns 1.01

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 1977.74 ns 0.24 ns 0.23 ns 1.02
from array of 1 - create + subscribe + current_thread 2462.40 ns 25.37 ns 25.15 ns 1.01
concat_as_source of just(1 immediate) create + subscribe 6495.89 ns 330.48 ns 331.76 ns 1.00
defer from array of 1 - defer + create + subscribe + immediate 2063.82 ns 0.26 ns 0.23 ns 1.13
interval - interval + take(3) + subscribe + immediate 4677.95 ns 109.74 ns 114.71 ns 0.96
interval - interval + take(3) + subscribe + current_thread 5673.84 ns 102.55 ns 110.75 ns 0.93

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 2896.38 ns 0.23 ns 0.23 ns 1.00
immediate_just+filter(true)+subscribe 2025.79 ns 0.22 ns 0.23 ns 0.95
immediate_just(1,2)+skip(1)+subscribe 2714.57 ns 0.22 ns 0.23 ns 0.95
immediate_just(1,1,2)+distinct_until_changed()+subscribe 2030.97 ns 0.47 ns 0.47 ns 0.99
immediate_just(1,2)+first()+subscribe 3076.34 ns 0.22 ns 0.23 ns 0.95
immediate_just(1,2)+last()+subscribe 2332.27 ns 0.22 ns 0.24 ns 0.95
immediate_just+take_last(1)+subscribe 3047.27 ns 70.08 ns 68.97 ns 1.02

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 841.34 ns 4.02 ns 4.07 ns 0.99
current_thread scheduler create worker + schedule 1185.33 ns 38.56 ns 36.38 ns 1.06
current_thread scheduler create worker + schedule + recursive schedule 1990.69 ns 219.02 ns 228.08 ns 0.96

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 2119.45 ns 0.23 ns 0.23 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 2352.45 ns 0.47 ns 0.47 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 5417.76 ns 413.71 ns 416.36 ns 0.99
immediate_just+buffer(2)+subscribe 2482.13 ns 67.85 ns 69.12 ns 0.98
immediate_just+window(2)+subscribe + subscsribe inner 5284.07 ns 2292.16 ns 2314.40 ns 0.99

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 2101.58 ns - - 0.00
immediate_just+take_while(true)+subscribe 2113.19 ns 0.23 ns 0.23 ns 1.00

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 4832.24 ns 0.23 ns 0.23 ns 0.97

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 7698.54 ns 452.48 ns 455.27 ns 0.99
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 8369.30 ns 447.61 ns 451.55 ns 0.99
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 475.66 ns 478.95 ns 0.99
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 8016.04 ns 1903.39 ns 1958.72 ns 0.97
immediate_just(1) + zip(immediate_just(2)) + subscribe 5165.67 ns 816.65 ns 865.26 ns 0.94

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 72.84 ns 47.11 ns 62.34 ns 0.76

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 2665.03 ns 98.16 ns 107.65 ns 0.91
basic sample with immediate scheduler 2639.37 ns 14.95 ns 17.66 ns 0.85

Aggregating Operators

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

Error Handling Operators

name rxcpp rpp prev rpp ratio
create(on_next(1), on_error())+on_error_resume_next(immediate_just(2)))+subscribe 6756.98 ns 4298.76 ns - 0.00

ci-ubuntu-clang

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 275.29 ns 1.57 ns 1.54 ns 1.02
Subscribe empty callbacks to empty observable via pipe operator 273.76 ns 1.56 ns 1.54 ns 1.01

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 568.26 ns 0.31 ns 0.31 ns 1.00
from array of 1 - create + subscribe + current_thread 797.25 ns 5.55 ns 5.56 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 1915.53 ns 112.38 ns 112.64 ns 1.00
defer from array of 1 - defer + create + subscribe + immediate 585.03 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 1532.64 ns 57.07 ns 57.09 ns 1.00
interval - interval + take(3) + subscribe + current_thread 2077.69 ns 30.88 ns 30.88 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 914.38 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 662.87 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 862.52 ns 0.31 ns 0.31 ns 1.01
immediate_just(1,1,2)+distinct_until_changed()+subscribe 686.44 ns 0.62 ns 0.62 ns 1.00
immediate_just(1,2)+first()+subscribe 1094.58 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+last()+subscribe 736.98 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 971.55 ns 0.31 ns 0.31 ns 1.00

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 198.87 ns 1.56 ns 1.54 ns 1.01
current_thread scheduler create worker + schedule 310.77 ns 5.58 ns 5.57 ns 1.00
current_thread scheduler create worker + schedule + recursive schedule 618.98 ns 58.58 ns 59.24 ns 0.99

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 667.26 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 725.91 ns 0.31 ns 0.31 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 1845.24 ns 122.52 ns 119.57 ns 1.02
immediate_just+buffer(2)+subscribe 1375.62 ns 14.51 ns 13.59 ns 1.07
immediate_just+window(2)+subscribe + subscsribe inner 2242.16 ns 816.74 ns 821.11 ns 0.99

Conditional Operators

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

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 1606.00 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 2502.38 ns 126.75 ns 124.74 ns 1.02
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 2994.37 ns 120.87 ns 121.56 ns 0.99
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 117.00 ns 114.38 ns 1.02
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 2664.38 ns 725.05 ns 732.53 ns 0.99
immediate_just(1) + zip(immediate_just(2)) + subscribe 1863.64 ns 200.04 ns 170.41 ns 1.17

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 35.24 ns 14.18 ns 14.83 ns 0.96

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1055.51 ns 13.58 ns 13.28 ns 1.02
basic sample with immediate scheduler 1040.66 ns 5.24 ns 5.86 ns 0.89

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 737.82 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 861.94 ns 126.44 ns - 0.00

ci-windows

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 587.51 ns 4.71 ns 4.01 ns 1.17
Subscribe empty callbacks to empty observable via pipe operator 596.54 ns 4.71 ns 4.01 ns 1.17

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 1179.63 ns 5.24 ns 5.24 ns 1.00
from array of 1 - create + subscribe + current_thread 1449.36 ns 19.16 ns 20.42 ns 0.94
concat_as_source of just(1 immediate) create + subscribe 4862.56 ns 167.82 ns 182.41 ns 0.92
defer from array of 1 - defer + create + subscribe + immediate 1229.72 ns 4.93 ns 5.24 ns 0.94
interval - interval + take(3) + subscribe + immediate 3153.69 ns 129.39 ns 130.65 ns 0.99
interval - interval + take(3) + subscribe + current_thread 3461.09 ns 59.56 ns 60.75 ns 0.98

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1858.41 ns 12.78 ns 12.87 ns 0.99
immediate_just+filter(true)+subscribe 1725.00 ns 11.71 ns 12.37 ns 0.95
immediate_just(1,2)+skip(1)+subscribe 2091.04 ns 13.67 ns 13.01 ns 1.05
immediate_just(1,1,2)+distinct_until_changed()+subscribe 1389.20 ns 15.78 ns 15.94 ns 0.99
immediate_just(1,2)+first()+subscribe 2111.80 ns 12.63 ns 12.96 ns 0.97
immediate_just(1,2)+last()+subscribe 1493.75 ns 14.02 ns 14.13 ns 0.99
immediate_just+take_last(1)+subscribe 2071.40 ns 62.04 ns 61.51 ns 1.01

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 489.75 ns 7.07 ns 7.34 ns 0.96
current_thread scheduler create worker + schedule 880.52 ns 17.60 ns 17.70 ns 0.99
current_thread scheduler create worker + schedule + recursive schedule 1175.14 ns 127.80 ns 112.46 ns 1.14

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 1349.01 ns 11.21 ns 12.25 ns 0.91
immediate_just+scan(10, std::plus)+subscribe 1438.22 ns 21.59 ns 21.58 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 4000.00 ns 234.18 ns 231.77 ns 1.01
immediate_just+buffer(2)+subscribe 2365.08 ns 58.28 ns 58.12 ns 1.00
immediate_just+window(2)+subscribe + subscsribe inner 4129.41 ns 1604.86 ns 1551.66 ns 1.03

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 1358.99 ns 11.43 ns 11.46 ns 1.00
immediate_just+take_while(true)+subscribe 1344.41 ns 11.69 ns 12.37 ns 0.95

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 4229.22 ns 7.10 ns 7.71 ns 0.92

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 5316.26 ns 236.77 ns 237.30 ns 1.00
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 6752.63 ns 236.26 ns 232.16 ns 1.02
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 235.98 ns 229.05 ns 1.03
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 6448.60 ns 998.93 ns 980.56 ns 1.02
immediate_just(1) + zip(immediate_just(2)) + subscribe 4045.58 ns 544.93 ns 541.84 ns 1.01

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 36.08 ns 26.84 ns 26.59 ns 1.01

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1890.20 ns 59.57 ns 59.16 ns 1.01
basic sample with immediate scheduler 1894.82 ns 36.42 ns 39.17 ns 0.93

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 1482.67 ns 19.99 ns 19.96 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 1984.01 ns 386.22 ns - 0.00

@codecov

codecov Bot commented Feb 18, 2024

Copy link
Copy Markdown

Codecov Report

All modified and coverable lines are covered by tests ✅

Comparison is base (721b469) 95.53% compared to head (6dbc33c) 95.03%.
Report is 10 commits behind head on v2.

Additional details and impacted files
@@            Coverage Diff             @@
##               v2     #528      +/-   ##
==========================================
- Coverage   95.53%   95.03%   -0.51%     
==========================================
  Files          80       85       +5     
  Lines        2105     1530     -575     
==========================================
- Hits         2011     1454     -557     
+ Misses         94       76      -18     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Comment thread src/rpp/rpp/operators/on_error_resume_next.hpp Outdated
Comment thread src/rpp/rpp/operators/on_error_resume_next.hpp Outdated
@sonarqubecloud

Copy link
Copy Markdown

@AlexInLog AlexInLog merged commit 151959c into AlexInLog:v2 Feb 18, 2024
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