Skip to content

Finally operator#531

Merged
AlexInLog merged 3 commits into
AlexInLog:v2from
CorentinBT:finally_operator
Feb 21, 2024
Merged

Finally operator#531
AlexInLog merged 3 commits into
AlexInLog:v2from
CorentinBT:finally_operator

Conversation

@CorentinBT

Copy link
Copy Markdown
Contributor

No description provided.

Comment thread src/tests/rpp/test_finally.cpp
Comment thread src/rpp/rpp/operators/finally.hpp Outdated
@github-actions

Copy link
Copy Markdown
Contributor

BENCHMARK RESULTS (AUTOGENERATED)

ci-ubuntu-gcc

General

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

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 729.35 ns 0.31 ns 0.31 ns 1.00
from array of 1 - create + subscribe + current_thread 1041.94 ns 5.25 ns 5.25 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 2225.74 ns 114.97 ns 114.64 ns 1.00
defer from array of 1 - defer + create + subscribe + immediate 733.65 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 2116.71 ns 58.01 ns 57.98 ns 1.00
interval - interval + take(3) + subscribe + current_thread 3027.24 ns 32.18 ns 32.10 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1091.52 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 822.53 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 1009.64 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 861.56 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+first()+subscribe 1226.91 ns 0.62 ns 0.62 ns 1.00
immediate_just(1,2)+last()+subscribe 910.87 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 1095.71 ns 17.91 ns 17.28 ns 1.04

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 265.80 ns 2.16 ns 2.16 ns 1.00
current_thread scheduler create worker + schedule 379.64 ns 7.41 ns 7.41 ns 1.00
current_thread scheduler create worker + schedule + recursive schedule 828.14 ns 64.64 ns 64.19 ns 1.01

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 826.23 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 889.96 ns 0.31 ns 0.31 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 2332.99 ns 160.20 ns 154.27 ns 1.04
immediate_just+buffer(2)+subscribe 1518.56 ns 14.20 ns 13.59 ns 1.05
immediate_just+window(2)+subscribe + subscsribe inner 2379.56 ns 1048.66 ns 1050.29 ns 1.00

Conditional Operators

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

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 2033.09 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 3473.33 ns 173.40 ns 179.47 ns 0.97
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3596.89 ns 161.72 ns 166.92 ns 0.97
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 139.64 ns 136.22 ns 1.03
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 3552.27 ns 1042.73 ns 955.67 ns 1.09
immediate_just(1) + zip(immediate_just(2)) + subscribe 2136.96 ns 212.93 ns 213.36 ns 1.00

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 34.58 ns 12.03 ns 11.71 ns 1.03

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1298.60 ns 16.36 ns 16.37 ns 1.00
basic sample with immediate scheduler 1382.79 ns 5.55 ns 5.55 ns 1.00

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 924.40 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 1030.00 ns 123.00 ns 121.58 ns 1.01

ci-macos

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 987.94 ns 3.84 ns 4.61 ns 0.83
Subscribe empty callbacks to empty observable via pipe operator 986.82 ns 3.84 ns 4.67 ns 0.82

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 1950.51 ns 0.23 ns 0.59 ns 0.39
from array of 1 - create + subscribe + current_thread 2481.32 ns 25.31 ns 31.16 ns 0.81
concat_as_source of just(1 immediate) create + subscribe 5491.36 ns 326.96 ns 571.33 ns 0.57
defer from array of 1 - defer + create + subscribe + immediate 1997.09 ns 0.23 ns 0.59 ns 0.40
interval - interval + take(3) + subscribe + immediate 5013.14 ns 114.97 ns 178.55 ns 0.64
interval - interval + take(3) + subscribe + current_thread 6897.27 ns 112.02 ns 164.09 ns 0.68

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 2890.61 ns 0.23 ns 0.61 ns 0.38
immediate_just+filter(true)+subscribe 2109.97 ns 0.23 ns 0.58 ns 0.40
immediate_just(1,2)+skip(1)+subscribe 2765.18 ns 0.23 ns 0.28 ns 0.82
immediate_just(1,1,2)+distinct_until_changed()+subscribe 2086.64 ns 0.47 ns 0.56 ns 0.83
immediate_just(1,2)+first()+subscribe 3208.47 ns 0.23 ns 0.57 ns 0.41
immediate_just(1,2)+last()+subscribe 2386.90 ns 0.23 ns 0.28 ns 0.82
immediate_just+take_last(1)+subscribe 3022.84 ns 69.84 ns 130.56 ns 0.53

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 930.55 ns 4.04 ns 8.10 ns 0.50
current_thread scheduler create worker + schedule 1135.69 ns 36.52 ns 59.66 ns 0.61
current_thread scheduler create worker + schedule + recursive schedule 2093.43 ns 229.68 ns 267.69 ns 0.86

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 2037.85 ns 0.24 ns 0.28 ns 0.84
immediate_just+scan(10, std::plus)+subscribe 2242.01 ns 0.45 ns 0.57 ns 0.79
immediate_just+flat_map(immediate_just(v*2))+subscribe 5375.02 ns 412.49 ns 605.18 ns 0.68
immediate_just+buffer(2)+subscribe 2495.38 ns 68.80 ns 133.71 ns 0.51
immediate_just+window(2)+subscribe + subscsribe inner 5382.43 ns 2777.10 ns 2880.37 ns 0.96

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 2005.20 ns - - 0.00
immediate_just+take_while(true)+subscribe 2141.31 ns 0.22 ns 0.30 ns 0.74

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 4964.10 ns 0.23 ns 0.29 ns 0.79

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 7600.67 ns 452.47 ns 769.20 ns 0.59
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 8373.11 ns 447.66 ns 815.36 ns 0.55
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 475.61 ns 810.71 ns 0.59
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 7947.45 ns 1909.24 ns 3281.71 ns 0.58
immediate_just(1) + zip(immediate_just(2)) + subscribe 4921.18 ns 807.15 ns 998.26 ns 0.81

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 76.34 ns 49.20 ns 68.14 ns 0.72

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 2832.65 ns 103.10 ns 121.13 ns 0.85
basic sample with immediate scheduler 2761.54 ns 15.06 ns 18.05 ns 0.83

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 2395.93 ns 0.23 ns 0.60 ns 0.39

Error Handling Operators

name rxcpp rpp prev rpp ratio
create(on_next(1), on_error())+on_error_resume_next(immediate_just(2)))+subscribe 6544.46 ns 4101.37 ns 5072.12 ns 0.81

ci-ubuntu-clang

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 271.52 ns 0.88 ns 1.58 ns 0.55
Subscribe empty callbacks to empty observable via pipe operator 269.92 ns 0.88 ns 1.56 ns 0.56

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 567.72 ns 0.42 ns 0.31 ns 1.35
from array of 1 - create + subscribe + current_thread 801.56 ns 5.57 ns 5.55 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 1932.48 ns 112.97 ns 112.00 ns 1.01
defer from array of 1 - defer + create + subscribe + immediate 583.58 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 1502.72 ns 57.07 ns 57.07 ns 1.00
interval - interval + take(3) + subscribe + current_thread 2099.68 ns 30.94 ns 30.88 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 918.08 ns 0.31 ns 0.34 ns 0.92
immediate_just+filter(true)+subscribe 665.05 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 849.15 ns 0.32 ns 0.31 ns 1.03
immediate_just(1,1,2)+distinct_until_changed()+subscribe 694.87 ns 0.62 ns 0.62 ns 1.01
immediate_just(1,2)+first()+subscribe 1089.80 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+last()+subscribe 729.36 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 941.03 ns 0.31 ns 0.31 ns 1.00

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 206.66 ns 0.88 ns 1.56 ns 0.56
current_thread scheduler create worker + schedule 306.30 ns 5.95 ns 5.57 ns 1.07
current_thread scheduler create worker + schedule + recursive schedule 620.94 ns 58.72 ns 58.75 ns 1.00

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 665.33 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 716.86 ns 0.31 ns 0.31 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 1817.09 ns 122.75 ns 122.39 ns 1.00
immediate_just+buffer(2)+subscribe 1357.09 ns 14.54 ns 14.51 ns 1.00
immediate_just+window(2)+subscribe + subscsribe inner 2214.68 ns 814.08 ns 802.51 ns 1.01

Conditional Operators

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

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 1605.05 ns 0.31 ns 0.31 ns 1.02

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 2501.41 ns 126.19 ns 125.65 ns 1.00
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3015.15 ns 121.18 ns 120.63 ns 1.00
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 112.83 ns 112.51 ns 1.00
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 2582.68 ns 740.21 ns 729.61 ns 1.01
immediate_just(1) + zip(immediate_just(2)) + subscribe 1782.39 ns 177.53 ns 178.16 ns 1.00

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 26.17 ns 14.18 ns 14.19 ns 1.00

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1017.26 ns 13.66 ns 13.59 ns 1.01
basic sample with immediate scheduler 1027.90 ns 5.86 ns 5.86 ns 1.00

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 743.92 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 849.29 ns 129.57 ns 126.30 ns 1.03

ci-windows

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 582.97 ns 4.78 ns 4.01 ns 1.19
Subscribe empty callbacks to empty observable via pipe operator 591.06 ns 4.76 ns 4.01 ns 1.19

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 1178.22 ns 5.24 ns 5.57 ns 0.94
from array of 1 - create + subscribe + current_thread 1468.26 ns 19.77 ns 18.53 ns 1.07
concat_as_source of just(1 immediate) create + subscribe 4720.95 ns 168.40 ns 169.89 ns 0.99
defer from array of 1 - defer + create + subscribe + immediate 1231.65 ns 4.93 ns 4.93 ns 1.00
interval - interval + take(3) + subscribe + immediate 2966.18 ns 129.50 ns 164.57 ns 0.79
interval - interval + take(3) + subscribe + current_thread 3451.51 ns 59.52 ns 60.75 ns 0.98

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1858.79 ns 12.85 ns 12.87 ns 1.00
immediate_just+filter(true)+subscribe 1722.53 ns 11.70 ns 12.35 ns 0.95
immediate_just(1,2)+skip(1)+subscribe 1767.60 ns 13.10 ns 13.11 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 1374.16 ns 15.82 ns 15.94 ns 0.99
immediate_just(1,2)+first()+subscribe 2093.70 ns 12.65 ns 12.95 ns 0.98
immediate_just(1,2)+last()+subscribe 1487.79 ns 14.08 ns 14.10 ns 1.00
immediate_just+take_last(1)+subscribe 2048.30 ns 62.25 ns 62.21 ns 1.00

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 491.45 ns 6.96 ns 7.34 ns 0.95
current_thread scheduler create worker + schedule 662.65 ns 17.59 ns 18.20 ns 0.97
current_thread scheduler create worker + schedule + recursive schedule 1102.56 ns 109.41 ns 109.44 ns 1.00

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 1336.69 ns 11.22 ns 12.30 ns 0.91
immediate_just+scan(10, std::plus)+subscribe 1447.09 ns 21.59 ns 21.27 ns 1.02
immediate_just+flat_map(immediate_just(v*2))+subscribe 3933.55 ns 229.69 ns 227.83 ns 1.01
immediate_just+buffer(2)+subscribe 2351.75 ns 58.30 ns 57.70 ns 1.01
immediate_just+window(2)+subscribe + subscsribe inner 4120.36 ns 1550.91 ns 1577.76 ns 0.98

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 1340.43 ns 11.44 ns 11.45 ns 1.00
immediate_just+take_while(true)+subscribe 1337.01 ns 11.70 ns 13.88 ns 0.84

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 4173.56 ns 7.09 ns 7.09 ns 1.00

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 5111.92 ns 232.10 ns 231.07 ns 1.00
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 6558.28 ns 231.84 ns 419.56 ns 0.55
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 237.41 ns 237.81 ns 1.00
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 6344.75 ns 968.57 ns 964.35 ns 1.00
immediate_just(1) + zip(immediate_just(2)) + subscribe 3966.42 ns 551.42 ns 541.17 ns 1.02

Subjects

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

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1857.54 ns 59.75 ns 59.32 ns 1.01
basic sample with immediate scheduler 1871.45 ns 35.17 ns 35.17 ns 1.00

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 1467.71 ns 19.98 ns 19.97 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 1951.43 ns 363.84 ns 348.75 ns 1.04

@codecov

codecov Bot commented Feb 20, 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 (98f6309) 95.10%.
Report is 14 commits behind head on v2.

Additional details and impacted files
@@            Coverage Diff             @@
##               v2     #531      +/-   ##
==========================================
- Coverage   95.53%   95.10%   -0.43%     
==========================================
  Files          80       86       +6     
  Lines        2105     1533     -572     
==========================================
- Hits         2011     1458     -553     
+ Misses         94       75      -19     

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

@sonarqubecloud

Copy link
Copy Markdown

@AlexInLog AlexInLog merged commit 9bcdcde into AlexInLog:v2 Feb 21, 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