Skip to content

Forward selector exception in on_error_resume_next + expose test utils#556

Merged
victimsnino merged 4 commits into
victimsnino:v2from
CorentinBT:on_error_fixes
Apr 10, 2024
Merged

Forward selector exception in on_error_resume_next + expose test utils#556
victimsnino merged 4 commits into
victimsnino:v2from
CorentinBT:on_error_fixes

Conversation

@CorentinBT
Copy link
Copy Markdown
Contributor

No description provided.

Comment thread src/rpp/rpp/operators/switch_on_next.hpp
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 9, 2024

BENCHMARK RESULTS (AUTOGENERATED)

ci-ubuntu-gcc

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 301.56 ns 2.21 ns 2.16 ns 1.02
Subscribe empty callbacks to empty observable via pipe operator 300.73 ns 2.16 ns 2.16 ns 1.00

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 688.06 ns 0.31 ns 0.31 ns 1.00
from array of 1 - create + subscribe + current_thread 1072.32 ns 5.25 ns 5.25 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 2326.49 ns 125.57 ns 111.58 ns 1.13
defer from array of 1 - defer + create + subscribe + immediate 729.53 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 2150.54 ns 59.23 ns 59.19 ns 1.00
interval - interval + take(3) + subscribe + current_thread 3128.68 ns 32.73 ns 32.72 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1099.55 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 852.64 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 1018.27 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 837.62 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+first()+subscribe 1276.95 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+last()+subscribe 906.15 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 1132.78 ns 17.28 ns 18.20 ns 0.95

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 274.57 ns 2.16 ns 2.16 ns 1.00
current_thread scheduler create worker + schedule 375.21 ns 7.19 ns 7.10 ns 1.01
current_thread scheduler create worker + schedule + recursive schedule 847.47 ns 70.67 ns 65.20 ns 1.08

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 916.25 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 910.30 ns 0.31 ns 0.31 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 2376.09 ns 177.84 ns 170.78 ns 1.04
immediate_just+buffer(2)+subscribe 1522.68 ns 13.59 ns 13.89 ns 0.98
immediate_just+window(2)+subscribe + subscsribe inner 2360.86 ns 1104.92 ns 1037.62 ns 1.06

Conditional Operators

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

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 1974.14 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 3511.46 ns 175.89 ns 193.90 ns 0.91
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3719.34 ns 168.54 ns 172.59 ns 0.98
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 129.99 ns 155.97 ns 0.83
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 3701.87 ns 923.72 ns 939.79 ns 0.98
immediate_just(1) + zip(immediate_just(2)) + subscribe 2286.49 ns 444.81 ns 214.86 ns 2.07

Subjects

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

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1427.85 ns 15.43 ns 14.51 ns 1.06
basic sample with immediate scheduler 1466.85 ns 5.55 ns 5.55 ns 1.00

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 916.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 1055.98 ns 120.67 ns 121.79 ns 0.99

ci-macos

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 978.89 ns 3.87 ns 3.96 ns 0.98
Subscribe empty callbacks to empty observable via pipe operator 980.13 ns 3.85 ns 3.95 ns 0.98

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 1941.39 ns 0.23 ns 0.24 ns 0.95
from array of 1 - create + subscribe + current_thread 2456.30 ns 25.38 ns 26.46 ns 0.96
concat_as_source of just(1 immediate) create + subscribe 5331.18 ns 327.48 ns 404.29 ns 0.81
defer from array of 1 - defer + create + subscribe + immediate 1939.09 ns 0.23 ns 0.24 ns 0.94
interval - interval + take(3) + subscribe + immediate 4817.05 ns 111.86 ns 157.21 ns 0.71
interval - interval + take(3) + subscribe + current_thread 5875.34 ns 106.44 ns 146.69 ns 0.73

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 2858.14 ns 0.23 ns 0.24 ns 0.95
immediate_just+filter(true)+subscribe 2110.88 ns 0.23 ns 0.24 ns 0.97
immediate_just(1,2)+skip(1)+subscribe 2684.69 ns 0.23 ns 0.24 ns 0.93
immediate_just(1,1,2)+distinct_until_changed()+subscribe 2040.78 ns 0.46 ns 0.51 ns 0.89
immediate_just(1,2)+first()+subscribe 3135.45 ns 0.23 ns 0.24 ns 0.95
immediate_just(1,2)+last()+subscribe 2346.90 ns 0.23 ns 0.25 ns 0.91
immediate_just+take_last(1)+subscribe 3015.95 ns 69.86 ns 76.02 ns 0.92

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 836.90 ns 3.93 ns 5.69 ns 0.69
current_thread scheduler create worker + schedule 1176.26 ns 38.44 ns 48.54 ns 0.79
current_thread scheduler create worker + schedule + recursive schedule 1983.62 ns 217.19 ns 224.52 ns 0.97

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 2111.43 ns 0.23 ns 1.70 ns 0.14
immediate_just+scan(10, std::plus)+subscribe 2343.28 ns 0.47 ns 1.56 ns 0.30
immediate_just+flat_map(immediate_just(v*2))+subscribe 5376.67 ns 415.27 ns 636.87 ns 0.65
immediate_just+buffer(2)+subscribe 2502.72 ns 69.42 ns 118.63 ns 0.59
immediate_just+window(2)+subscribe + subscsribe inner 5373.73 ns 2285.08 ns 3597.21 ns 0.64

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 2064.43 ns - - 0.00
immediate_just+take_while(true)+subscribe 2156.92 ns 0.24 ns 0.24 ns 1.00

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 4942.74 ns 0.23 ns 0.25 ns 0.95

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 7554.92 ns 450.91 ns 596.75 ns 0.76
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 8215.08 ns 446.18 ns 690.28 ns 0.65
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 463.67 ns 606.91 ns 0.76
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 7833.47 ns 1857.91 ns 1997.81 ns 0.93
immediate_just(1) + zip(immediate_just(2)) + subscribe 5044.05 ns 786.59 ns 850.06 ns 0.93

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 74.16 ns 49.48 ns 50.91 ns 0.97

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 2725.48 ns 109.35 ns 112.61 ns 0.97
basic sample with immediate scheduler 2720.30 ns 15.06 ns 14.52 ns 1.04

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 2388.87 ns 0.23 ns 0.24 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 6520.37 ns 4088.25 ns 4252.52 ns 0.96

ci-ubuntu-clang

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 279.74 ns 1.57 ns 1.58 ns 0.99
Subscribe empty callbacks to empty observable via pipe operator 282.36 ns 1.56 ns 1.57 ns 1.00

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 568.32 ns 0.31 ns 0.31 ns 1.00
from array of 1 - create + subscribe + current_thread 844.41 ns 5.56 ns 5.56 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 1945.22 ns 113.29 ns 113.19 ns 1.00
defer from array of 1 - defer + create + subscribe + immediate 599.04 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 1547.24 ns 58.30 ns 58.30 ns 1.00
interval - interval + take(3) + subscribe + current_thread 2101.02 ns 31.50 ns 31.50 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 899.23 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 662.96 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 856.26 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 711.32 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+first()+subscribe 1081.49 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+last()+subscribe 741.73 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 962.11 ns 0.31 ns 0.31 ns 1.00

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 204.62 ns 1.56 ns 1.55 ns 1.01
current_thread scheduler create worker + schedule 306.91 ns 5.57 ns 5.57 ns 1.00
current_thread scheduler create worker + schedule + recursive schedule 644.02 ns 60.13 ns 59.27 ns 1.01

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 643.33 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 709.39 ns 0.32 ns 0.31 ns 1.02
immediate_just+flat_map(immediate_just(v*2))+subscribe 1870.34 ns 119.44 ns 119.60 ns 1.00
immediate_just+buffer(2)+subscribe 1339.26 ns 14.51 ns 14.82 ns 0.98
immediate_just+window(2)+subscribe + subscsribe inner 2110.59 ns 808.68 ns 808.20 ns 1.00

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 650.28 ns - - 0.00
immediate_just+take_while(true)+subscribe 663.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 1616.44 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 2576.01 ns 127.40 ns 126.53 ns 1.01
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3212.44 ns 121.29 ns 121.41 ns 1.00
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 110.26 ns 110.64 ns 1.00
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 2787.27 ns 730.48 ns 727.92 ns 1.00
immediate_just(1) + zip(immediate_just(2)) + subscribe 1771.63 ns 166.49 ns 170.30 ns 0.98

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 23.62 ns 13.88 ns 14.18 ns 0.98

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1051.75 ns 13.28 ns 13.28 ns 1.00
basic sample with immediate scheduler 1058.37 ns 6.17 ns 6.17 ns 1.00

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 740.44 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 864.42 ns 140.53 ns 124.53 ns 1.13

ci-windows

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 581.30 ns 4.94 ns 4.02 ns 1.23
Subscribe empty callbacks to empty observable via pipe operator 598.40 ns 4.94 ns 4.02 ns 1.23

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 1173.77 ns 5.24 ns 5.55 ns 0.94
from array of 1 - create + subscribe + current_thread 1452.10 ns 18.54 ns 19.80 ns 0.94
concat_as_source of just(1 immediate) create + subscribe 4756.02 ns 171.39 ns 168.72 ns 1.02
defer from array of 1 - defer + create + subscribe + immediate 1220.67 ns 5.24 ns 5.55 ns 0.94
interval - interval + take(3) + subscribe + immediate 3151.38 ns 133.64 ns 134.20 ns 1.00
interval - interval + take(3) + subscribe + current_thread 3473.56 ns 58.78 ns 57.86 ns 1.02

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1870.57 ns 12.87 ns 12.87 ns 1.00
immediate_just+filter(true)+subscribe 1678.62 ns 11.72 ns 12.36 ns 0.95
immediate_just(1,2)+skip(1)+subscribe 1772.76 ns 13.01 ns 13.05 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 1379.54 ns 15.78 ns 15.94 ns 0.99
immediate_just(1,2)+first()+subscribe 2087.71 ns 12.95 ns 12.64 ns 1.02
immediate_just(1,2)+last()+subscribe 1783.99 ns 14.11 ns 14.10 ns 1.00
immediate_just+take_last(1)+subscribe 2065.46 ns 60.11 ns 59.02 ns 1.02

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 492.01 ns 6.17 ns 6.48 ns 0.95
current_thread scheduler create worker + schedule 669.84 ns 18.22 ns 19.11 ns 0.95
current_thread scheduler create worker + schedule + recursive schedule 1119.62 ns 114.04 ns 116.26 ns 0.98

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 1324.05 ns 11.62 ns 12.31 ns 0.94
immediate_just+scan(10, std::plus)+subscribe 1456.87 ns 21.60 ns 21.29 ns 1.01
immediate_just+flat_map(immediate_just(v*2))+subscribe 3944.86 ns 228.52 ns 228.25 ns 1.00
immediate_just+buffer(2)+subscribe 2320.93 ns 58.62 ns 58.98 ns 0.99
immediate_just+window(2)+subscribe + subscsribe inner 4106.83 ns 1546.75 ns 1532.69 ns 1.01

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 1326.10 ns 11.44 ns 11.44 ns 1.00
immediate_just+take_while(true)+subscribe 1340.59 ns 11.72 ns 12.35 ns 0.95

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 3516.38 ns 7.40 ns 7.71 ns 0.96

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 5267.31 ns 246.49 ns 251.92 ns 0.98
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 6511.86 ns 236.38 ns 242.48 ns 0.97
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 237.73 ns 226.43 ns 1.05
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 6332.50 ns 962.46 ns 961.46 ns 1.00
immediate_just(1) + zip(immediate_just(2)) + subscribe 3939.04 ns 537.76 ns 545.03 ns 0.99

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 36.38 ns 26.82 ns 25.90 ns 1.04

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1880.33 ns 59.12 ns 59.13 ns 1.00
basic sample with immediate scheduler 1891.71 ns 38.28 ns 38.56 ns 0.99

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 1487.05 ns 19.98 ns 17.82 ns 1.12

Error Handling Operators

name rxcpp rpp prev rpp ratio
create(on_next(1), on_error())+on_error_resume_next(immediate_just(2)))+subscribe 1975.68 ns 332.83 ns 335.85 ns 0.99

@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 9, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 95.43%. Comparing base (721b469) to head (3ff5a8a).
Report is 36 commits behind head on v2.

Additional details and impacted files
@@            Coverage Diff             @@
##               v2     #556      +/-   ##
==========================================
- Coverage   95.53%   95.43%   -0.10%     
==========================================
  Files          80       89       +9     
  Lines        2105     1643     -462     
==========================================
- Hits         2011     1568     -443     
+ Misses         94       75      -19     

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

@sonarqubecloud
Copy link
Copy Markdown

@victimsnino victimsnino merged commit 6a40e2b into victimsnino:v2 Apr 10, 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