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

simplify disposables in subjects #511

Merged
merged 1 commit into from
Jan 23, 2024
Merged

Conversation

victimsnino
Copy link
Owner

No description provided.

Copy link
Contributor

BENCHMARK RESULTS (AUTOGENERATED)

ci-ubuntu-gcc

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 315.95 ns 1.24 ns 1.24 ns 1.00
Subscribe empty callbacks to empty observable via pipe operator 305.23 ns 1.23 ns 1.23 ns 1.00

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 697.28 ns 0.31 ns 0.31 ns 1.00
from array of 1 - create + subscribe + current_thread 1036.76 ns 5.25 ns 5.25 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 2281.82 ns 80.65 ns 97.14 ns 0.83
defer from array of 1 - defer + create + subscribe + immediate 767.37 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 2097.83 ns 58.01 ns 58.00 ns 1.00
interval - interval + take(3) + subscribe + current_thread 3032.37 ns 32.11 ns 32.12 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1106.87 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 846.31 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 987.89 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 842.70 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+first()+subscribe 1238.81 ns 0.62 ns 0.62 ns 1.00
immediate_just(1,2)+last()+subscribe 920.76 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 1185.06 ns 17.60 ns 18.20 ns 0.97

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 264.87 ns 1.23 ns 1.24 ns 1.00
current_thread scheduler create worker + schedule 374.10 ns 6.17 ns 6.48 ns 0.95
current_thread scheduler create worker + schedule + recursive schedule 811.31 ns 66.64 ns 64.77 ns 1.03

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 872.41 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 903.54 ns 0.31 ns 0.31 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 2352.96 ns 95.70 ns 96.06 ns 1.00
immediate_just+buffer(2)+subscribe 1558.09 ns 13.89 ns 13.89 ns 1.00
immediate_just+window(2)+subscribe + subscsribe inner 2388.65 ns 636.99 ns 675.78 ns 0.94

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 833.97 ns - - 0.00
immediate_just+take_while(true)+subscribe 835.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 2015.43 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 3388.17 ns 111.10 ns 113.82 ns 0.98
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3710.34 ns 104.74 ns 107.40 ns 0.98
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 83.62 ns 84.86 ns 0.99
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 3526.00 ns 456.69 ns 484.34 ns 0.94

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 34.49 ns 11.11 ns 23.08 ns 0.48

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1399.21 ns 14.51 ns 14.20 ns 1.02
basic sample with immediate scheduler 1372.97 ns 5.55 ns 5.55 ns 1.00

Aggregating Operators

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

ci-macos

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 981.22 ns 2.35 ns 6.97 ns 0.34
Subscribe empty callbacks to empty observable via pipe operator 980.87 ns 2.33 ns 6.96 ns 0.34

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 1931.18 ns 0.23 ns 0.68 ns 0.34
from array of 1 - create + subscribe + current_thread 2457.66 ns 25.31 ns 41.65 ns 0.61
concat_as_source of just(1 immediate) create + subscribe 5410.03 ns 251.92 ns 471.47 ns 0.53
defer from array of 1 - defer + create + subscribe + immediate 1994.67 ns 0.23 ns 0.68 ns 0.34
interval - interval + take(3) + subscribe + immediate 4961.14 ns 113.31 ns 187.01 ns 0.61
interval - interval + take(3) + subscribe + current_thread 6095.60 ns 107.36 ns 154.43 ns 0.70

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 2857.24 ns 0.23 ns 0.68 ns 0.34
immediate_just+filter(true)+subscribe 2135.19 ns 0.24 ns 0.68 ns 0.35
immediate_just(1,2)+skip(1)+subscribe 2761.84 ns 0.23 ns 0.68 ns 0.35
immediate_just(1,1,2)+distinct_until_changed()+subscribe 2065.74 ns 0.47 ns 0.65 ns 0.72
immediate_just(1,2)+first()+subscribe 3236.47 ns 0.23 ns 0.69 ns 0.34
immediate_just(1,2)+last()+subscribe 2401.86 ns 0.23 ns 0.33 ns 0.71
immediate_just+take_last(1)+subscribe 3076.00 ns 70.14 ns 165.31 ns 0.42

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 850.32 ns 2.96 ns 6.63 ns 0.45
current_thread scheduler create worker + schedule 1190.16 ns 35.32 ns 49.39 ns 0.72
current_thread scheduler create worker + schedule + recursive schedule 1995.80 ns 214.84 ns 449.16 ns 0.48

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 2105.80 ns 0.23 ns 0.45 ns 0.52
immediate_just+scan(10, std::plus)+subscribe 2341.35 ns 0.47 ns 1.10 ns 0.43
immediate_just+flat_map(immediate_just(v*2))+subscribe 5384.36 ns 331.55 ns 472.20 ns 0.70
immediate_just+buffer(2)+subscribe 2530.21 ns 68.22 ns 160.11 ns 0.43
immediate_just+window(2)+subscribe + subscsribe inner 5484.43 ns 1842.08 ns 3893.40 ns 0.47

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 2094.55 ns - - 0.00
immediate_just+take_while(true)+subscribe 2102.67 ns 0.23 ns 0.64 ns 0.37

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 4912.18 ns 0.23 ns 0.33 ns 0.72

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 7582.07 ns 367.61 ns 741.60 ns 0.50
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 8406.20 ns 376.15 ns 575.29 ns 0.65
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 399.70 ns 745.11 ns 0.54
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 8038.86 ns 1442.10 ns 2870.87 ns 0.50

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 73.26 ns 39.12 ns 131.82 ns 0.30

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 2739.89 ns 106.65 ns 142.18 ns 0.75
basic sample with immediate scheduler 2754.35 ns 14.04 ns 24.94 ns 0.56

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 2393.06 ns 0.23 ns 0.36 ns 0.65

ci-ubuntu-clang

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 266.93 ns 0.88 ns 0.88 ns 1.00
Subscribe empty callbacks to empty observable via pipe operator 267.95 ns 0.88 ns 0.88 ns 1.00

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 586.45 ns 0.31 ns 0.31 ns 1.00
from array of 1 - create + subscribe + current_thread 798.81 ns 5.55 ns 5.56 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 1927.57 ns 71.98 ns 75.12 ns 0.96
defer from array of 1 - defer + create + subscribe + immediate 583.24 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 1548.57 ns 57.07 ns 57.07 ns 1.00
interval - interval + take(3) + subscribe + current_thread 2102.75 ns 31.04 ns 30.86 ns 1.01

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 900.17 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 658.40 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 857.49 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 698.14 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+first()+subscribe 1102.95 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+last()+subscribe 757.92 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 969.16 ns 0.31 ns 0.31 ns 1.00

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 193.45 ns 0.88 ns 0.88 ns 1.00
current_thread scheduler create worker + schedule 313.60 ns 5.58 ns 5.57 ns 1.00
current_thread scheduler create worker + schedule + recursive schedule 624.81 ns 58.20 ns 58.86 ns 0.99

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 690.42 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 713.52 ns 0.32 ns 0.31 ns 1.04
immediate_just+flat_map(immediate_just(v*2))+subscribe 1810.82 ns 82.33 ns 77.85 ns 1.06
immediate_just+buffer(2)+subscribe 1348.69 ns 13.59 ns 14.22 ns 0.96
immediate_just+window(2)+subscribe + subscsribe inner 2103.99 ns 581.03 ns 622.41 ns 0.93

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 644.14 ns - - 0.00
immediate_just+take_while(true)+subscribe 664.88 ns 0.31 ns 0.31 ns 0.99

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 1579.54 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 2514.35 ns 86.77 ns 84.66 ns 1.02
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3015.11 ns 92.15 ns 92.25 ns 1.00
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 80.20 ns 79.87 ns 1.00
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 2659.91 ns 546.82 ns 547.25 ns 1.00

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 23.11 ns 12.65 ns 24.30 ns 0.52

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1029.30 ns 14.51 ns 14.50 ns 1.00
basic sample with immediate scheduler 1052.09 ns 6.17 ns 6.17 ns 1.00

Aggregating Operators

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

ci-windows

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 581.95 ns 3.09 ns 3.09 ns 1.00
Subscribe empty callbacks to empty observable via pipe operator 590.17 ns 3.09 ns 3.09 ns 1.00

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 1174.01 ns 5.24 ns 4.94 ns 1.06
from array of 1 - create + subscribe + current_thread 1438.32 ns 20.38 ns 20.41 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 4705.83 ns 149.88 ns 167.38 ns 0.90
defer from array of 1 - defer + create + subscribe + immediate 1205.65 ns 5.24 ns 4.94 ns 1.06
interval - interval + take(3) + subscribe + immediate 3134.66 ns 131.46 ns 130.66 ns 1.01
interval - interval + take(3) + subscribe + current_thread 3472.44 ns 60.45 ns 60.45 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1852.70 ns 12.86 ns 12.85 ns 1.00
immediate_just+filter(true)+subscribe 1337.73 ns 12.33 ns 12.33 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 1776.80 ns 12.97 ns 13.00 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 1633.44 ns 19.75 ns 15.94 ns 1.24
immediate_just(1,2)+first()+subscribe 2420.17 ns 12.98 ns 12.97 ns 1.00
immediate_just(1,2)+last()+subscribe 1474.97 ns 14.18 ns 14.18 ns 1.00
immediate_just+take_last(1)+subscribe 2040.00 ns 63.88 ns 60.39 ns 1.06

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 484.92 ns 4.32 ns 4.63 ns 0.93
current_thread scheduler create worker + schedule 664.93 ns 16.97 ns 16.97 ns 1.00
current_thread scheduler create worker + schedule + recursive schedule 1097.99 ns 104.98 ns 105.58 ns 0.99

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 1336.09 ns 12.24 ns 12.27 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 1437.11 ns 21.29 ns 21.27 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 3584.13 ns 203.24 ns 187.66 ns 1.08
immediate_just+buffer(2)+subscribe 2633.50 ns 62.54 ns 59.33 ns 1.05
immediate_just+window(2)+subscribe + subscsribe inner 4107.17 ns 1030.60 ns 1049.95 ns 0.98

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 1346.31 ns 11.45 ns 11.41 ns 1.00
immediate_just+take_while(true)+subscribe 1335.73 ns 12.33 ns 12.33 ns 1.00

Utility Operators

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

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 5319.18 ns 216.12 ns 206.25 ns 1.05
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 6548.73 ns 197.12 ns 188.70 ns 1.04
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 232.53 ns 193.73 ns 1.20
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 6307.10 ns 704.58 ns 718.65 ns 0.98

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 37.08 ns 25.61 ns 36.40 ns 0.70

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1889.68 ns 60.53 ns 59.96 ns 1.01
basic sample with immediate scheduler 1893.55 ns 37.66 ns 39.80 ns 0.95

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 1796.14 ns 19.97 ns 19.98 ns 1.00

Copy link

codecov bot commented Jan 23, 2024

Codecov Report

Attention: 1 lines in your changes are missing coverage. Please review.

Comparison is base (a9de26e) 95.80% compared to head (c708e04) 95.90%.
Report is 1 commits behind head on v2.

Files Patch % Lines
src/rpp/rpp/disposables/details/container.hpp 96.66% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##               v2     #511      +/-   ##
==========================================
+ Coverage   95.80%   95.90%   +0.09%     
==========================================
  Files          78       78              
  Lines        1979     2001      +22     
==========================================
+ Hits         1896     1919      +23     
+ Misses         83       82       -1     

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

Copy link

sonarcloud bot commented Jan 23, 2024

Quality Gate Passed Quality Gate passed

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

1 New issue
0 Security Hotspots
100.0% Coverage on New Code
0.0% Duplication on New Code

See analysis details on SonarCloud

@victimsnino victimsnino marked this pull request as ready for review January 23, 2024 21:12
@victimsnino victimsnino merged commit c5cb2bd into v2 Jan 23, 2024
28 checks passed
@victimsnino victimsnino deleted the simplify_disposables_in_subjects branch January 23, 2024 21:12
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