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

Own queue if needed #541

Merged
merged 6 commits into from
Mar 8, 2024
Merged

Own queue if needed #541

merged 6 commits into from
Mar 8, 2024

Conversation

victimsnino
Copy link
Owner

No description provided.

Copy link
Contributor

github-actions bot commented Mar 8, 2024

BENCHMARK RESULTS (AUTOGENERATED)

ci-ubuntu-gcc

General

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

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 717.73 ns 0.62 ns 0.62 ns 1.00
from array of 1 - create + subscribe + current_thread 1044.10 ns 4.63 ns 4.63 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 2253.80 ns 114.52 ns 114.04 ns 1.00
defer from array of 1 - defer + create + subscribe + immediate 755.11 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 2240.64 ns 59.23 ns 59.23 ns 1.00
interval - interval + take(3) + subscribe + current_thread 3094.81 ns 32.75 ns 32.73 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1096.65 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 896.11 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 1000.81 ns 0.32 ns 0.31 ns 1.05
immediate_just(1,1,2)+distinct_until_changed()+subscribe 848.61 ns 0.31 ns 0.31 ns 1.02
immediate_just(1,2)+first()+subscribe 1230.15 ns 0.31 ns 0.62 ns 0.50
immediate_just(1,2)+last()+subscribe 932.25 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 1106.02 ns 17.29 ns 18.53 ns 0.93

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 271.44 ns 2.16 ns 2.16 ns 1.00
current_thread scheduler create worker + schedule 373.86 ns 6.48 ns 6.80 ns 0.95
current_thread scheduler create worker + schedule + recursive schedule 825.46 ns 65.16 ns 64.73 ns 1.01

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 854.59 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 888.37 ns 0.31 ns 0.31 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 2610.64 ns 155.84 ns 171.08 ns 0.91
immediate_just+buffer(2)+subscribe 1571.10 ns 13.59 ns 14.21 ns 0.96
immediate_just+window(2)+subscribe + subscsribe inner 2314.11 ns 1083.52 ns 1039.64 ns 1.04

Conditional Operators

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

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 1961.06 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 3452.53 ns 190.08 ns 181.46 ns 1.05
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3670.66 ns 165.61 ns 168.48 ns 0.98
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 131.96 ns 132.75 ns 0.99
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 3512.87 ns 927.87 ns 1020.55 ns 0.91
immediate_just(1) + zip(immediate_just(2)) + subscribe 2098.73 ns 236.77 ns 216.18 ns 1.10

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 35.41 ns 11.86 ns 11.71 ns 1.01

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1417.77 ns 13.62 ns 15.75 ns 0.86
basic sample with immediate scheduler 1426.95 ns 5.69 ns 5.55 ns 1.03

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 1033.33 ns 0.38 ns 0.31 ns 1.23

Error Handling Operators

name rxcpp rpp prev rpp ratio
create(on_next(1), on_error())+on_error_resume_next(immediate_just(2)))+subscribe 1033.29 ns 142.73 ns 122.88 ns 1.16

ci-macos

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 970.54 ns 3.85 ns 3.84 ns 1.00
Subscribe empty callbacks to empty observable via pipe operator 972.91 ns 3.85 ns 3.84 ns 1.00

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 1926.65 ns 0.23 ns 0.23 ns 1.00
from array of 1 - create + subscribe + current_thread 2444.30 ns 25.41 ns 25.41 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 5457.26 ns 329.05 ns 328.27 ns 1.00
defer from array of 1 - defer + create + subscribe + immediate 1975.82 ns 0.23 ns 0.23 ns 1.00
interval - interval + take(3) + subscribe + immediate 4941.97 ns 114.47 ns 114.69 ns 1.00
interval - interval + take(3) + subscribe + current_thread 6144.25 ns 109.35 ns 107.34 ns 1.02

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 2771.87 ns 0.23 ns 0.23 ns 0.98
immediate_just+filter(true)+subscribe 2056.58 ns 0.23 ns 0.23 ns 0.98
immediate_just(1,2)+skip(1)+subscribe 2745.14 ns 0.23 ns 0.23 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 2068.71 ns 0.47 ns 0.47 ns 1.00
immediate_just(1,2)+first()+subscribe 3177.68 ns 0.23 ns 0.23 ns 1.00
immediate_just(1,2)+last()+subscribe 2379.74 ns 0.23 ns 0.23 ns 1.00
immediate_just+take_last(1)+subscribe 3135.00 ns 70.32 ns 70.39 ns 1.00

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 822.88 ns 4.02 ns 4.03 ns 1.00
current_thread scheduler create worker + schedule 1138.16 ns 38.20 ns 38.05 ns 1.00
current_thread scheduler create worker + schedule + recursive schedule 1901.50 ns 212.22 ns 220.85 ns 0.96

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 2005.92 ns 0.22 ns 0.23 ns 0.96
immediate_just+scan(10, std::plus)+subscribe 2295.83 ns 0.45 ns 0.47 ns 0.95
immediate_just+flat_map(immediate_just(v*2))+subscribe 5341.63 ns 407.71 ns 414.23 ns 0.98
immediate_just+buffer(2)+subscribe 2458.16 ns 70.18 ns 70.59 ns 0.99
immediate_just+window(2)+subscribe + subscsribe inner 5127.28 ns 2311.93 ns 2294.28 ns 1.01

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 2044.06 ns - - 0.00
immediate_just+take_while(true)+subscribe 2049.22 ns 0.23 ns 0.23 ns 0.98

Utility Operators

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

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 7317.25 ns 431.10 ns 453.93 ns 0.95
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 8165.02 ns 426.64 ns 447.71 ns 0.95
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 463.42 ns 475.38 ns 0.97
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 7750.97 ns 1853.88 ns 1897.21 ns 0.98
immediate_just(1) + zip(immediate_just(2)) + subscribe 5013.31 ns 798.09 ns 861.80 ns 0.93

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 71.79 ns 47.28 ns 49.24 ns 0.96

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 2641.30 ns 106.27 ns 102.61 ns 1.04
basic sample with immediate scheduler 2646.54 ns 14.73 ns 14.20 ns 1.04

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 2271.09 ns 0.22 ns 0.23 ns 0.95

Error Handling Operators

name rxcpp rpp prev rpp ratio
create(on_next(1), on_error())+on_error_resume_next(immediate_just(2)))+subscribe 6361.89 ns 3894.99 ns 4155.44 ns 0.94

ci-ubuntu-clang

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 276.47 ns 0.88 ns 1.54 ns 0.57
Subscribe empty callbacks to empty observable via pipe operator 282.13 ns 0.88 ns 1.54 ns 0.57

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 583.24 ns 0.31 ns 0.31 ns 1.00
from array of 1 - create + subscribe + current_thread 813.43 ns 5.55 ns 5.55 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 1913.64 ns 113.78 ns 112.45 ns 1.01
defer from array of 1 - defer + create + subscribe + immediate 597.06 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 1516.54 ns 58.27 ns 58.26 ns 1.00
interval - interval + take(3) + subscribe + current_thread 2106.07 ns 31.48 ns 31.49 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 934.53 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 666.91 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 867.26 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 688.28 ns 0.71 ns 0.62 ns 1.14
immediate_just(1,2)+first()+subscribe 1107.90 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+last()+subscribe 740.79 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 1050.15 ns 0.31 ns 0.31 ns 1.00

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 206.85 ns 0.88 ns 1.54 ns 0.57
current_thread scheduler create worker + schedule 320.28 ns 5.90 ns 5.57 ns 1.06
current_thread scheduler create worker + schedule + recursive schedule 632.23 ns 59.16 ns 58.82 ns 1.01

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 661.06 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 718.86 ns 0.31 ns 0.31 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 1810.20 ns 119.15 ns 121.61 ns 0.98
immediate_just+buffer(2)+subscribe 1375.34 ns 15.12 ns 14.20 ns 1.06
immediate_just+window(2)+subscribe + subscsribe inner 2209.73 ns 811.73 ns 807.70 ns 1.00

Conditional Operators

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

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 1611.00 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 2561.75 ns 127.07 ns 125.51 ns 1.01
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3016.02 ns 121.61 ns 120.81 ns 1.01
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 110.43 ns 111.71 ns 0.99
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 2621.73 ns 745.92 ns 761.51 ns 0.98
immediate_just(1) + zip(immediate_just(2)) + subscribe 1774.10 ns 169.87 ns 173.92 ns 0.98

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 26.21 ns 13.88 ns 14.81 ns 0.94

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1035.88 ns 13.28 ns 13.57 ns 0.98
basic sample with immediate scheduler 1051.71 ns 6.17 ns 5.86 ns 1.05

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 753.80 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 867.27 ns 125.94 ns 126.44 ns 1.00

ci-windows

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 580.55 ns 4.93 ns 4.02 ns 1.23
Subscribe empty callbacks to empty observable via pipe operator 591.70 ns 4.94 ns 4.02 ns 1.23

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 1171.41 ns 5.55 ns 5.55 ns 1.00
from array of 1 - create + subscribe + current_thread 1435.94 ns 18.82 ns 19.14 ns 0.98
concat_as_source of just(1 immediate) create + subscribe 4611.66 ns 171.10 ns 181.86 ns 0.94
defer from array of 1 - defer + create + subscribe + immediate 1201.25 ns 5.55 ns 5.86 ns 0.95
interval - interval + take(3) + subscribe + immediate 2970.13 ns 133.68 ns 134.32 ns 1.00
interval - interval + take(3) + subscribe + current_thread 3467.91 ns 58.69 ns 57.88 ns 1.01

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1850.36 ns 12.83 ns 12.88 ns 1.00
immediate_just+filter(true)+subscribe 1687.42 ns 11.71 ns 12.38 ns 0.95
immediate_just(1,2)+skip(1)+subscribe 1756.85 ns 13.12 ns 13.20 ns 0.99
immediate_just(1,1,2)+distinct_until_changed()+subscribe 1378.68 ns 15.81 ns 15.96 ns 0.99
immediate_just(1,2)+first()+subscribe 2075.96 ns 12.98 ns 12.64 ns 1.03
immediate_just(1,2)+last()+subscribe 1777.78 ns 14.12 ns 14.10 ns 1.00
immediate_just+take_last(1)+subscribe 2036.75 ns 59.51 ns 58.85 ns 1.01

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 492.42 ns 6.18 ns 6.18 ns 1.00
current_thread scheduler create worker + schedule 665.80 ns 18.22 ns 18.51 ns 0.98
current_thread scheduler create worker + schedule + recursive schedule 1107.38 ns 116.81 ns 112.08 ns 1.04

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 1308.88 ns 11.23 ns 12.26 ns 0.92
immediate_just+scan(10, std::plus)+subscribe 1421.28 ns 21.60 ns 21.28 ns 1.01
immediate_just+flat_map(immediate_just(v*2))+subscribe 3871.28 ns 233.01 ns 266.40 ns 0.87
immediate_just+buffer(2)+subscribe 2338.44 ns 59.81 ns 57.78 ns 1.04
immediate_just+window(2)+subscribe + subscsribe inner 4123.47 ns 1518.47 ns 1556.27 ns 0.98

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 1319.88 ns 11.45 ns 11.45 ns 1.00
immediate_just+take_while(true)+subscribe 1324.75 ns 11.71 ns 12.38 ns 0.95

Utility Operators

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

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 5430.48 ns 253.15 ns 244.80 ns 1.03
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 5802.82 ns 237.09 ns 231.81 ns 1.02
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 233.84 ns 237.11 ns 0.99
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 6225.43 ns 961.79 ns 964.74 ns 1.00
immediate_just(1) + zip(immediate_just(2)) + subscribe 3878.79 ns 536.17 ns 532.80 ns 1.01

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 36.11 ns 26.51 ns 26.23 ns 1.01

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1872.41 ns 59.57 ns 59.47 ns 1.00
basic sample with immediate scheduler 1870.81 ns 35.48 ns 37.05 ns 0.96

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 1482.42 ns 19.99 ns 17.80 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 1942.95 ns 336.45 ns 343.30 ns 0.98

@victimsnino victimsnino merged commit b2a8748 into v2 Mar 8, 2024
24 of 26 checks passed
@victimsnino victimsnino deleted the own_queue_if_needed branch March 8, 2024 20:39
Copy link

sonarcloud bot commented Mar 8, 2024

Quality Gate Failed Quality Gate failed

Failed conditions
10.5% Duplication on New Code (required ≤ 3%)

See analysis details on SonarCloud

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