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

Auto dispose disposable in case of destruction if needed #518

Merged
merged 2 commits into from
Jan 30, 2024

Conversation

victimsnino
Copy link
Owner

No description provided.

Copy link
Contributor

github-actions bot commented Jan 29, 2024

BENCHMARK RESULTS (AUTOGENERATED)

ci-ubuntu-gcc

General

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

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 692.42 ns 0.31 ns 0.31 ns 1.00
from array of 1 - create + subscribe + current_thread 1035.22 ns 5.25 ns 4.63 ns 1.13
concat_as_source of just(1 immediate) create + subscribe 2345.57 ns 112.16 ns 106.64 ns 1.05
defer from array of 1 - defer + create + subscribe + immediate 728.93 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 2133.20 ns 57.98 ns 57.98 ns 1.00
interval - interval + take(3) + subscribe + current_thread 3102.34 ns 32.11 ns 32.10 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1081.43 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 836.36 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 1007.07 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 865.30 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+first()+subscribe 1233.17 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+last()+subscribe 923.73 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 1136.68 ns 19.15 ns 17.91 ns 1.07

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 264.91 ns 2.16 ns 2.16 ns 1.00
current_thread scheduler create worker + schedule 366.57 ns 7.10 ns 6.18 ns 1.15
current_thread scheduler create worker + schedule + recursive schedule 810.83 ns 64.03 ns 63.69 ns 1.01

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 844.39 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 911.67 ns 0.31 ns 0.31 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 2370.72 ns 160.86 ns 148.75 ns 1.08
immediate_just+buffer(2)+subscribe 1552.41 ns 14.82 ns 14.20 ns 1.04
immediate_just+window(2)+subscribe + subscsribe inner 2409.59 ns 981.75 ns 951.30 ns 1.03

Conditional Operators

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

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 2029.27 ns 0.62 ns 0.31 ns 2.02

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 3429.86 ns 176.52 ns 164.65 ns 1.07
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3665.75 ns 175.28 ns 148.56 ns 1.18
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 145.27 ns 128.58 ns 1.13
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 3582.91 ns 1173.51 ns 1015.30 ns 1.16

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 34.56 ns 12.02 ns 11.72 ns 1.03

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1404.46 ns 14.19 ns 14.81 ns 0.96
basic sample with immediate scheduler 1332.95 ns 5.55 ns 5.55 ns 1.00

Aggregating Operators

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

ci-macos

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 968.56 ns 3.85 ns 4.42 ns 0.87
Subscribe empty callbacks to empty observable via pipe operator 972.34 ns 3.86 ns 4.93 ns 0.78

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 1922.56 ns 0.23 ns 0.27 ns 0.86
from array of 1 - create + subscribe + current_thread 2428.76 ns 26.25 ns 29.57 ns 0.89
concat_as_source of just(1 immediate) create + subscribe 5382.29 ns 327.09 ns 375.69 ns 0.87
defer from array of 1 - defer + create + subscribe + immediate 1963.54 ns 0.23 ns 0.30 ns 0.78
interval - interval + take(3) + subscribe + immediate 4924.48 ns 113.94 ns 142.62 ns 0.80
interval - interval + take(3) + subscribe + current_thread 6041.24 ns 107.29 ns 127.01 ns 0.84

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 2854.14 ns 0.23 ns 0.29 ns 0.81
immediate_just+filter(true)+subscribe 2109.13 ns 0.23 ns 0.28 ns 0.84
immediate_just(1,2)+skip(1)+subscribe 2991.88 ns 0.25 ns 0.28 ns 0.89
immediate_just(1,1,2)+distinct_until_changed()+subscribe 2082.94 ns 0.48 ns 0.55 ns 0.88
immediate_just(1,2)+first()+subscribe 3173.18 ns 0.23 ns 0.27 ns 0.85
immediate_just(1,2)+last()+subscribe 2399.40 ns 0.23 ns 0.28 ns 0.84
immediate_just+take_last(1)+subscribe 3065.43 ns 71.62 ns 83.22 ns 0.86

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 841.82 ns 4.03 ns 5.44 ns 0.74
current_thread scheduler create worker + schedule 1189.29 ns 38.46 ns 43.14 ns 0.89
current_thread scheduler create worker + schedule + recursive schedule 2108.02 ns 223.11 ns 264.99 ns 0.84

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 2026.98 ns 0.22 ns 0.27 ns 0.82
immediate_just+scan(10, std::plus)+subscribe 2239.45 ns 0.45 ns 0.56 ns 0.79
immediate_just+flat_map(immediate_just(v*2))+subscribe 5846.62 ns 419.39 ns 499.37 ns 0.84
immediate_just+buffer(2)+subscribe 2496.82 ns 70.77 ns 82.35 ns 0.86
immediate_just+window(2)+subscribe + subscsribe inner 5378.55 ns 2172.26 ns 2642.27 ns 0.82

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 2098.71 ns - - 0.00
immediate_just+take_while(true)+subscribe 2106.05 ns 0.23 ns 0.28 ns 0.85

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 4958.53 ns 0.23 ns 0.27 ns 0.85

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 7438.92 ns 452.89 ns 521.70 ns 0.87
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 8356.53 ns 447.56 ns 550.83 ns 0.81
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 475.50 ns 568.09 ns 0.84
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 7903.15 ns 1903.99 ns 2434.04 ns 0.78

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 73.71 ns 49.37 ns 57.42 ns 0.86

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 2756.34 ns 110.82 ns 124.90 ns 0.89
basic sample with immediate scheduler 2686.18 ns 14.31 ns 15.90 ns 0.90

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 2380.58 ns 0.23 ns 0.27 ns 0.87

ci-ubuntu-clang

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 266.53 ns 1.56 ns 0.88 ns 1.78
Subscribe empty callbacks to empty observable via pipe operator 268.25 ns 1.57 ns 0.88 ns 1.79

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 554.29 ns 0.31 ns 0.31 ns 1.00
from array of 1 - create + subscribe + current_thread 810.12 ns 5.56 ns 5.55 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 1915.81 ns 112.28 ns 109.35 ns 1.03
defer from array of 1 - defer + create + subscribe + immediate 586.41 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 1548.99 ns 57.07 ns 57.24 ns 1.00
interval - interval + take(3) + subscribe + current_thread 2101.56 ns 30.88 ns 30.86 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 940.63 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 678.15 ns 0.31 ns 0.31 ns 0.99
immediate_just(1,2)+skip(1)+subscribe 855.93 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 699.15 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+first()+subscribe 1112.98 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+last()+subscribe 752.98 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 967.87 ns 0.31 ns 0.31 ns 1.00

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 198.49 ns 1.57 ns 0.89 ns 1.77
current_thread scheduler create worker + schedule 310.72 ns 5.57 ns 5.60 ns 0.99
current_thread scheduler create worker + schedule + recursive schedule 629.50 ns 58.82 ns 60.77 ns 0.97

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 683.55 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 714.50 ns 0.31 ns 0.31 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 1791.23 ns 120.66 ns 118.04 ns 1.02
immediate_just+buffer(2)+subscribe 1368.71 ns 15.44 ns 13.58 ns 1.14
immediate_just+window(2)+subscribe + subscsribe inner 2186.92 ns 772.80 ns 745.91 ns 1.04

Conditional Operators

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

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 1601.30 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 2550.65 ns 124.24 ns 123.78 ns 1.00
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3063.67 ns 121.32 ns 120.15 ns 1.01
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 113.84 ns 109.86 ns 1.04
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 2741.91 ns 724.03 ns 723.82 ns 1.00

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 24.09 ns 13.57 ns 13.88 ns 0.98

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1052.26 ns 14.20 ns 13.59 ns 1.05
basic sample with immediate scheduler 1038.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 748.37 ns 0.31 ns 0.31 ns 1.00

ci-windows

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 580.86 ns 4.01 ns 4.02 ns 1.00
Subscribe empty callbacks to empty observable via pipe operator 593.12 ns 4.02 ns 4.01 ns 1.00

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 1178.23 ns 4.94 ns 5.24 ns 0.94
from array of 1 - create + subscribe + current_thread 1445.36 ns 19.76 ns 20.38 ns 0.97
concat_as_source of just(1 immediate) create + subscribe 4741.48 ns 171.15 ns 177.31 ns 0.97
defer from array of 1 - defer + create + subscribe + immediate 1220.77 ns 4.94 ns 5.24 ns 0.94
interval - interval + take(3) + subscribe + immediate 3104.23 ns 129.78 ns 129.57 ns 1.00
interval - interval + take(3) + subscribe + current_thread 3460.47 ns 60.79 ns 60.75 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1871.36 ns 12.87 ns 12.83 ns 1.00
immediate_just+filter(true)+subscribe 1324.43 ns 12.41 ns 12.35 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 1780.40 ns 13.00 ns 13.11 ns 0.99
immediate_just(1,1,2)+distinct_until_changed()+subscribe 1366.79 ns 15.95 ns 15.94 ns 1.00
immediate_just(1,2)+first()+subscribe 2411.33 ns 12.95 ns 12.98 ns 1.00
immediate_just(1,2)+last()+subscribe 1489.73 ns 14.11 ns 14.12 ns 1.00
immediate_just+take_last(1)+subscribe 2038.88 ns 59.84 ns 59.27 ns 1.01

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 482.80 ns 7.34 ns 7.40 ns 0.99
current_thread scheduler create worker + schedule 663.57 ns 18.21 ns 16.92 ns 1.08
current_thread scheduler create worker + schedule + recursive schedule 1109.02 ns 110.61 ns 109.11 ns 1.01

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 1327.11 ns 12.35 ns 12.32 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 1429.16 ns 21.29 ns 21.27 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 3564.10 ns 238.31 ns 228.89 ns 1.04
immediate_just+buffer(2)+subscribe 2627.53 ns 60.61 ns 60.65 ns 1.00
immediate_just+window(2)+subscribe + subscsribe inner 4103.58 ns 1173.53 ns 1123.25 ns 1.04

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 1573.91 ns 11.51 ns 11.47 ns 1.00
immediate_just+take_while(true)+subscribe 1334.29 ns 12.38 ns 12.42 ns 1.00

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 3211.60 ns 7.40 ns 7.40 ns 1.00

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 5370.95 ns 247.15 ns 236.62 ns 1.04
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 6647.37 ns 239.05 ns 234.63 ns 1.02
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 225.62 ns 221.59 ns 1.02
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 6264.86 ns 971.56 ns 930.46 ns 1.04

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 36.37 ns 25.30 ns 26.57 ns 0.95

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1889.55 ns 70.78 ns 59.48 ns 1.19
basic sample with immediate scheduler 1890.61 ns 37.06 ns 34.86 ns 1.06

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 1812.35 ns 20.92 ns 19.98 ns 1.05

@victimsnino victimsnino marked this pull request as ready for review January 29, 2024 20:52
@victimsnino victimsnino changed the title add auto-dispose Auto dispose disposable in case of destruction if needed Jan 29, 2024
Copy link

codecov bot commented Jan 29, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Comparison is base (a1aa575) 95.69% compared to head (8e1e41e) 95.51%.

Additional details and impacted files
@@            Coverage Diff             @@
##               v2     #518      +/-   ##
==========================================
- Coverage   95.69%   95.51%   -0.19%     
==========================================
  Files          80       80              
  Lines        2093     2096       +3     
==========================================
- Hits         2003     2002       -1     
- Misses         90       94       +4     

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

Copy link

sonarcloud bot commented Jan 29, 2024

Quality Gate Passed Quality Gate passed

The SonarCloud Quality Gate passed, but some issues were introduced.

3 New issues
0 Security Hotspots
100.0% Coverage on New Code
0.0% Duplication on New Code

See analysis details on SonarCloud

@victimsnino victimsnino merged commit a1f5d1b into v2 Jan 30, 2024
27 of 28 checks passed
@victimsnino victimsnino deleted the feature/auto_dispose branch January 30, 2024 20: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.

1 participant