Skip to content

Fix disposing order#592

Merged
AlexInLog merged 6 commits into
v2from
fix_dispose_order
May 31, 2024
Merged

Fix disposing order#592
AlexInLog merged 6 commits into
v2from
fix_dispose_order

Conversation

@AlexInLog

Copy link
Copy Markdown
Owner

No description provided.

@AlexInLog AlexInLog marked this pull request as ready for review May 29, 2024 21:41
@CorentinBT

Copy link
Copy Markdown
Contributor

should we use test_operator_over_observable_finish_before_dispose in operators tests?

@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 300.95 ns 2.16 ns 2.19 ns 0.99
Subscribe empty callbacks to empty observable via pipe operator 302.45 ns 2.16 ns 2.16 ns 1.00

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 699.33 ns 0.31 ns 0.31 ns 1.00
from array of 1 - create + subscribe + current_thread 1037.44 ns 3.42 ns 3.70 ns 0.92
concat_as_source of just(1 immediate) create + subscribe 2262.75 ns 126.58 ns 130.31 ns 0.97
defer from array of 1 - defer + create + subscribe + immediate 715.04 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 2177.25 ns 59.23 ns 59.32 ns 1.00
interval - interval + take(3) + subscribe + current_thread 3001.66 ns 32.48 ns 32.42 ns 1.00
from array of 1 - create + as_blocking + subscribe + new_thread 29881.00 ns 28316.22 ns 28013.43 ns 1.01
from array of 1000 - create + as_blocking + subscribe + new_thread 39191.69 ns 51202.26 ns 51081.61 ns 1.00
concat_as_source of just(1 immediate) and just(1,2 immediate)create + subscribe 3460.52 ns 147.92 ns 143.01 ns 1.03

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1101.54 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 860.00 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 989.30 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 841.07 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+first()+subscribe 1225.48 ns 0.31 ns 0.62 ns 0.50
immediate_just(1,2)+last()+subscribe 942.88 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 1113.27 ns 17.91 ns 17.60 ns 1.02

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 285.81 ns 2.16 ns 3.03 ns 0.71
current_thread scheduler create worker + schedule 372.32 ns 5.56 ns 7.81 ns 0.71
current_thread scheduler create worker + schedule + recursive schedule 813.67 ns 55.58 ns 55.91 ns 0.99

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 850.76 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 886.75 ns 0.31 ns 0.31 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 2291.38 ns 158.77 ns 155.32 ns 1.02
immediate_just+buffer(2)+subscribe 1561.05 ns 13.59 ns 13.90 ns 0.98
immediate_just+window(2)+subscribe + subscsribe inner 2372.14 ns 1038.72 ns 975.08 ns 1.07

Conditional Operators

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

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 1993.22 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 3394.70 ns 179.58 ns 179.34 ns 1.00
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3603.58 ns 169.38 ns 167.56 ns 1.01
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 132.58 ns 134.43 ns 0.99
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 3524.03 ns 941.44 ns 1033.73 ns 0.91
immediate_just(1) + zip(immediate_just(2)) + subscribe 2126.84 ns 208.77 ns 202.95 ns 1.03

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 34.46 ns 16.78 ns 16.84 ns 1.00

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1346.73 ns 14.20 ns 12.97 ns 1.10
basic sample with immediate scheduler 1355.55 ns 5.55 ns 5.55 ns 1.00

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 912.91 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 2032.81 ns 974.87 ns 119.45 ns 8.16

ci-macos

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 978.58 ns 3.93 ns 3.94 ns 1.00
Subscribe empty callbacks to empty observable via pipe operator 984.52 ns 3.82 ns 3.93 ns 0.97

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 1938.31 ns 0.23 ns 0.24 ns 0.99
from array of 1 - create + subscribe + current_thread 2440.16 ns 32.86 ns 32.38 ns 1.01
concat_as_source of just(1 immediate) create + subscribe 5400.77 ns 336.66 ns 337.28 ns 1.00
defer from array of 1 - defer + create + subscribe + immediate 1973.40 ns 0.23 ns 0.23 ns 0.99
interval - interval + take(3) + subscribe + immediate 4926.68 ns 114.63 ns 114.14 ns 1.00
interval - interval + take(3) + subscribe + current_thread 6061.87 ns 95.41 ns 95.28 ns 1.00
from array of 1 - create + as_blocking + subscribe + new_thread 82159.23 ns 79851.86 ns 79803.07 ns 1.00
from array of 1000 - create + as_blocking + subscribe + new_thread 88135.09 ns 86524.29 ns 85981.08 ns 1.01
concat_as_source of just(1 immediate) and just(1,2 immediate)create + subscribe 8167.87 ns 378.88 ns 375.66 ns 1.01

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 2862.44 ns 0.23 ns 0.23 ns 1.00
immediate_just+filter(true)+subscribe 2104.36 ns 0.23 ns 0.23 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 2758.67 ns 0.23 ns 0.23 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 2070.87 ns 0.47 ns 0.47 ns 1.00
immediate_just(1,2)+first()+subscribe 3164.06 ns 0.23 ns 0.23 ns 1.00
immediate_just(1,2)+last()+subscribe 2380.18 ns 0.23 ns 0.24 ns 0.99
immediate_just+take_last(1)+subscribe 3027.21 ns 71.24 ns 69.84 ns 1.02

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 857.97 ns 4.13 ns 4.16 ns 0.99
current_thread scheduler create worker + schedule 1197.68 ns 38.50 ns 36.09 ns 1.07
current_thread scheduler create worker + schedule + recursive schedule 1968.68 ns 207.11 ns 204.66 ns 1.01

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 2034.11 ns 0.22 ns 0.23 ns 0.96
immediate_just+scan(10, std::plus)+subscribe 2361.72 ns 0.45 ns 0.47 ns 0.96
immediate_just+flat_map(immediate_just(v*2))+subscribe 5300.09 ns 397.87 ns 397.46 ns 1.00
immediate_just+buffer(2)+subscribe 2499.20 ns 70.40 ns 67.76 ns 1.04
immediate_just+window(2)+subscribe + subscsribe inner 5338.93 ns 2287.58 ns 2328.55 ns 0.98

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 2072.58 ns - - 0.00
immediate_just+take_while(true)+subscribe 2023.83 ns 0.22 ns 0.23 ns 0.95

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 4936.21 ns 0.23 ns 0.26 ns 0.88

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 7244.66 ns 424.38 ns 440.24 ns 0.96
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 8225.00 ns 428.73 ns 447.23 ns 0.96
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 451.05 ns 458.82 ns 0.98
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 7894.00 ns 1860.27 ns 1908.79 ns 0.97
immediate_just(1) + zip(immediate_just(2)) + subscribe 4911.20 ns 900.36 ns 836.75 ns 1.08

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 73.02 ns 48.09 ns 49.40 ns 0.97

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 2703.96 ns 63.10 ns 68.98 ns 0.91
basic sample with immediate scheduler 2697.49 ns 15.04 ns 14.61 ns 1.03

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 2385.61 ns 0.23 ns 0.23 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 6406.80 ns 4145.98 ns 4071.65 ns 1.02

ci-ubuntu-clang

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 270.39 ns 0.90 ns 1.55 ns 0.58
Subscribe empty callbacks to empty observable via pipe operator 269.70 ns 0.88 ns 1.54 ns 0.57

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 565.76 ns 0.31 ns 0.31 ns 1.00
from array of 1 - create + subscribe + current_thread 794.90 ns 4.01 ns 4.32 ns 0.93
concat_as_source of just(1 immediate) create + subscribe 2341.80 ns 136.31 ns 134.11 ns 1.02
defer from array of 1 - defer + create + subscribe + immediate 775.56 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 2204.86 ns 58.31 ns 58.40 ns 1.00
interval - interval + take(3) + subscribe + current_thread 3194.13 ns 30.88 ns 30.88 ns 1.00
from array of 1 - create + as_blocking + subscribe + new_thread 27492.28 ns 28141.63 ns 28083.80 ns 1.00
from array of 1000 - create + as_blocking + subscribe + new_thread 39694.30 ns 36281.60 ns 34966.62 ns 1.04
concat_as_source of just(1 immediate) and just(1,2 immediate)create + subscribe 3643.83 ns 159.44 ns 157.86 ns 1.01

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1157.67 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 840.48 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 1075.04 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 882.19 ns 0.31 ns 0.62 ns 0.50
immediate_just(1,2)+first()+subscribe 1385.73 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+last()+subscribe 1001.49 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 1185.71 ns 0.31 ns 0.31 ns 1.00

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 278.66 ns 0.88 ns 1.54 ns 0.57
current_thread scheduler create worker + schedule 394.87 ns 4.32 ns 4.78 ns 0.90
current_thread scheduler create worker + schedule + recursive schedule 856.51 ns 56.43 ns 56.64 ns 1.00

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 847.30 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 963.63 ns 0.31 ns 0.31 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 2287.77 ns 137.35 ns 139.11 ns 0.99
immediate_just+buffer(2)+subscribe 1529.30 ns 13.90 ns 13.89 ns 1.00
immediate_just+window(2)+subscribe + subscsribe inner 2456.79 ns 891.28 ns 918.77 ns 0.97

Conditional Operators

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

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 2012.89 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 3308.93 ns 160.61 ns 158.26 ns 1.01
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3706.77 ns 146.30 ns 145.91 ns 1.00
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 143.73 ns 144.88 ns 0.99
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 3371.74 ns 845.37 ns 869.10 ns 0.97
immediate_just(1) + zip(immediate_just(2)) + subscribe 2255.72 ns 200.72 ns 204.14 ns 0.98

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 52.53 ns 18.55 ns 19.45 ns 0.95

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1279.16 ns 11.42 ns 12.34 ns 0.93
basic sample with immediate scheduler 1288.42 ns 5.86 ns 6.17 ns 0.95

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 990.15 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 2178.63 ns 1224.25 ns 137.18 ns 8.92

ci-windows

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 578.36 ns 4.68 ns 4.01 ns 1.17
Subscribe empty callbacks to empty observable via pipe operator 586.58 ns 4.70 ns 4.01 ns 1.17

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 1168.81 ns 5.24 ns 5.24 ns 1.00
from array of 1 - create + subscribe + current_thread 1438.46 ns 16.48 ns 15.43 ns 1.07
concat_as_source of just(1 immediate) create + subscribe 3778.22 ns 181.68 ns 176.62 ns 1.03
defer from array of 1 - defer + create + subscribe + immediate 1201.87 ns 4.93 ns 5.24 ns 0.94
interval - interval + take(3) + subscribe + immediate 3444.83 ns 135.98 ns 133.45 ns 1.02
interval - interval + take(3) + subscribe + current_thread 3462.65 ns 53.39 ns 53.75 ns 0.99
from array of 1 - create + as_blocking + subscribe + new_thread 119700.00 ns 111922.22 ns 112560.00 ns 0.99
from array of 1000 - create + as_blocking + subscribe + new_thread 128855.56 ns 129825.00 ns 130925.00 ns 0.99
concat_as_source of just(1 immediate) and just(1,2 immediate)create + subscribe 5568.50 ns 204.40 ns 203.77 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 2151.70 ns 12.87 ns 12.87 ns 1.00
immediate_just+filter(true)+subscribe 1332.14 ns 12.38 ns 11.71 ns 1.06
immediate_just(1,2)+skip(1)+subscribe 1761.96 ns 13.18 ns 13.07 ns 1.01
immediate_just(1,1,2)+distinct_until_changed()+subscribe 1366.19 ns 15.94 ns 15.85 ns 1.01
immediate_just(1,2)+first()+subscribe 2069.12 ns 12.94 ns 12.64 ns 1.02
immediate_just(1,2)+last()+subscribe 2013.56 ns 14.58 ns 14.11 ns 1.03
immediate_just+take_last(1)+subscribe 2324.47 ns 58.56 ns 59.44 ns 0.99

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 487.92 ns 6.17 ns 6.18 ns 1.00
current_thread scheduler create worker + schedule 658.06 ns 13.10 ns 13.66 ns 0.96
current_thread scheduler create worker + schedule + recursive schedule 1334.55 ns 103.82 ns 103.90 ns 1.00

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 1329.66 ns 12.34 ns 11.33 ns 1.09
immediate_just+scan(10, std::plus)+subscribe 1442.41 ns 21.59 ns 21.27 ns 1.02
immediate_just+flat_map(immediate_just(v*2))+subscribe 3556.06 ns 222.11 ns 224.60 ns 0.99
immediate_just+buffer(2)+subscribe 2621.33 ns 58.44 ns 58.29 ns 1.00
immediate_just+window(2)+subscribe + subscsribe inner 4081.36 ns 1254.75 ns 1225.78 ns 1.02

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 1704.68 ns 11.46 ns 11.42 ns 1.00
immediate_just+take_while(true)+subscribe 1345.26 ns 12.38 ns 11.70 ns 1.06

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 3219.72 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 5295.07 ns 249.03 ns 239.61 ns 1.04
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 5545.89 ns 242.72 ns 238.86 ns 1.02
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 226.81 ns 240.28 ns 0.94
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 5472.38 ns 944.39 ns 938.04 ns 1.01
immediate_just(1) + zip(immediate_just(2)) + subscribe 3576.14 ns 533.93 ns 533.06 ns 1.00

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 36.89 ns 26.82 ns 26.53 ns 1.01

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1885.60 ns 59.09 ns 57.19 ns 1.03
basic sample with immediate scheduler 1901.50 ns 36.75 ns 39.20 ns 0.94

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 1480.68 ns 19.97 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 1938.96 ns 342.16 ns 347.15 ns 0.99

@sonarqubecloud

Copy link
Copy Markdown

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