Skip to content

Add get_value function to behavior_subject#570

Merged
victimsnino merged 2 commits into
v2from
add_get_value_to_behavior_subject
May 10, 2024
Merged

Add get_value function to behavior_subject#570
victimsnino merged 2 commits into
v2from
add_get_value_to_behavior_subject

Conversation

@victimsnino
Copy link
Copy Markdown
Owner

@victimsnino victimsnino commented May 10, 2024

@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 305.63 ns 2.16 ns 2.16 ns 1.00
Subscribe empty callbacks to empty observable via pipe operator 300.25 ns 2.16 ns 2.16 ns 1.00

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 689.39 ns 0.31 ns 0.31 ns 1.00
from array of 1 - create + subscribe + current_thread 1039.87 ns 3.42 ns 3.42 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 2270.34 ns 114.45 ns 131.57 ns 0.87
defer from array of 1 - defer + create + subscribe + immediate 757.71 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 2177.30 ns 59.27 ns 59.19 ns 1.00
interval - interval + take(3) + subscribe + current_thread 3033.20 ns 32.40 ns 32.42 ns 1.00
from array of 1 - create + as_blocking + subscribe + new_thread 30951.38 ns 27731.05 ns 28254.17 ns 0.98
from array of 1000 - create + as_blocking + subscribe + new_thread 37759.21 ns 48189.62 ns 52868.10 ns 0.91

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1087.79 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 831.73 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 997.24 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 858.79 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+first()+subscribe 1259.61 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+last()+subscribe 948.39 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 1087.61 ns 17.28 ns 17.62 ns 0.98

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 267.54 ns 2.16 ns 2.16 ns 1.00
current_thread scheduler create worker + schedule 367.61 ns 5.86 ns 5.86 ns 1.00
current_thread scheduler create worker + schedule + recursive schedule 835.95 ns 59.57 ns 55.98 ns 1.06

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 839.88 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 943.29 ns 0.31 ns 0.31 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 2311.99 ns 171.91 ns 163.41 ns 1.05
immediate_just+buffer(2)+subscribe 1603.89 ns 13.58 ns 13.90 ns 0.98
immediate_just+window(2)+subscribe + subscsribe inner 2380.22 ns 1090.26 ns 1065.79 ns 1.02

Conditional Operators

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

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 2023.42 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 3418.07 ns 195.88 ns 179.10 ns 1.09
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3680.83 ns 189.45 ns 194.94 ns 0.97
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 140.78 ns 142.74 ns 0.99
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 3528.67 ns 1081.98 ns 934.35 ns 1.16
immediate_just(1) + zip(immediate_just(2)) + subscribe 2073.32 ns 242.00 ns 202.99 ns 1.19

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 34.54 ns 16.79 ns 16.87 ns 1.00

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1347.31 ns 13.89 ns 13.89 ns 1.00
basic sample with immediate scheduler 1350.93 ns 5.55 ns 5.55 ns 1.00

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 920.25 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 1045.05 ns 130.91 ns 130.70 ns 1.00

ci-macos

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 1007.96 ns 4.03 ns 5.38 ns 0.75
Subscribe empty callbacks to empty observable via pipe operator 1048.84 ns 3.89 ns 5.36 ns 0.73

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 2138.61 ns 0.26 ns 0.45 ns 0.58
from array of 1 - create + subscribe + current_thread 2633.50 ns 34.44 ns 10.87 ns 3.17
concat_as_source of just(1 immediate) create + subscribe 5604.54 ns 337.54 ns 410.46 ns 0.82
defer from array of 1 - defer + create + subscribe + immediate 2151.27 ns 0.24 ns 0.29 ns 0.81
interval - interval + take(3) + subscribe + immediate 5396.19 ns 138.37 ns 98.21 ns 1.41
interval - interval + take(3) + subscribe + current_thread 6030.02 ns 95.52 ns 58.89 ns 1.62
from array of 1 - create + as_blocking + subscribe + new_thread 82727.23 ns 78246.38 ns 60507.65 ns 1.29
from array of 1000 - create + as_blocking + subscribe + new_thread 89061.08 ns 88444.15 ns 72230.64 ns 1.22

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 2946.17 ns 0.23 ns 0.28 ns 0.84
immediate_just+filter(true)+subscribe 2412.19 ns 0.25 ns 0.28 ns 0.89
immediate_just(1,2)+skip(1)+subscribe 2737.30 ns 0.23 ns 0.28 ns 0.84
immediate_just(1,1,2)+distinct_until_changed()+subscribe 2154.51 ns 0.47 ns 0.56 ns 0.84
immediate_just(1,2)+first()+subscribe 3210.99 ns 0.25 ns 0.28 ns 0.88
immediate_just(1,2)+last()+subscribe 2371.02 ns 0.23 ns 0.28 ns 0.84
immediate_just+take_last(1)+subscribe 3251.16 ns 74.15 ns 77.66 ns 0.95

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 845.24 ns 4.04 ns 5.73 ns 0.71
current_thread scheduler create worker + schedule 1172.03 ns 38.68 ns 15.86 ns 2.44
current_thread scheduler create worker + schedule + recursive schedule 2088.30 ns 213.65 ns 186.88 ns 1.14

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 2197.54 ns 0.24 ns 0.28 ns 0.85
immediate_just+scan(10, std::plus)+subscribe 2502.43 ns 0.47 ns 0.57 ns 0.83
immediate_just+flat_map(immediate_just(v*2))+subscribe 5286.08 ns 402.43 ns 463.70 ns 0.87
immediate_just+buffer(2)+subscribe 2502.53 ns 68.32 ns 68.37 ns 1.00
immediate_just+window(2)+subscribe + subscsribe inner 5340.83 ns 2293.48 ns 2746.71 ns 0.83

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 2086.07 ns - - 0.00
immediate_just+take_while(true)+subscribe 2175.47 ns 0.23 ns 0.28 ns 0.84

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 5094.85 ns 0.24 ns 0.28 ns 0.87

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 8090.12 ns 487.63 ns 513.94 ns 0.95
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 9660.53 ns 489.68 ns 525.25 ns 0.93
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 467.81 ns 510.18 ns 0.92
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 7939.16 ns 1909.06 ns 2320.07 ns 0.82
immediate_just(1) + zip(immediate_just(2)) + subscribe 5098.95 ns 822.77 ns 972.63 ns 0.85

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 76.64 ns 49.26 ns 62.23 ns 0.79

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 2770.21 ns 71.41 ns 38.34 ns 1.86
basic sample with immediate scheduler 2892.17 ns 14.99 ns 6.99 ns 2.14

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 2627.79 ns 0.25 ns 0.28 ns 0.89

Error Handling Operators

name rxcpp rpp prev rpp ratio
create(on_next(1), on_error())+on_error_resume_next(immediate_just(2)))+subscribe 6918.14 ns 4142.24 ns 4856.95 ns 0.85

ci-ubuntu-clang

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 269.49 ns 0.88 ns 1.57 ns 0.56
Subscribe empty callbacks to empty observable via pipe operator 270.42 ns 0.88 ns 1.55 ns 0.57

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 564.02 ns 0.31 ns 0.31 ns 1.00
from array of 1 - create + subscribe + current_thread 787.40 ns 4.01 ns 4.01 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 2336.66 ns 136.67 ns 134.92 ns 1.01
defer from array of 1 - defer + create + subscribe + immediate 778.37 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 2201.84 ns 58.36 ns 58.41 ns 1.00
interval - interval + take(3) + subscribe + current_thread 3111.68 ns 31.17 ns 31.17 ns 1.00
from array of 1 - create + as_blocking + subscribe + new_thread 28496.05 ns 26995.07 ns 28126.42 ns 0.96
from array of 1000 - create + as_blocking + subscribe + new_thread 39209.58 ns 36861.19 ns 37813.59 ns 0.97

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1161.76 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 841.59 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 1078.55 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 880.93 ns 0.31 ns 0.31 ns 0.99
immediate_just(1,2)+first()+subscribe 1360.34 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+last()+subscribe 1001.90 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 1197.92 ns 0.31 ns 0.31 ns 1.00

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 276.06 ns 0.88 ns 1.56 ns 0.56
current_thread scheduler create worker + schedule 398.36 ns 4.02 ns 4.01 ns 1.00
current_thread scheduler create worker + schedule + recursive schedule 848.83 ns 55.61 ns 57.27 ns 0.97

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 834.22 ns 0.31 ns 0.31 ns 0.98
immediate_just+scan(10, std::plus)+subscribe 960.51 ns 0.62 ns 0.62 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 2231.60 ns 138.03 ns 138.51 ns 1.00
immediate_just+buffer(2)+subscribe 1513.37 ns 13.59 ns 13.58 ns 1.00
immediate_just+window(2)+subscribe + subscsribe inner 2440.38 ns 881.09 ns 930.15 ns 0.95

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 832.37 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 1970.17 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 3201.20 ns 161.40 ns 160.57 ns 1.01
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3696.28 ns 149.00 ns 148.53 ns 1.00
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 142.11 ns 141.91 ns 1.00
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 3351.07 ns 841.09 ns 864.62 ns 0.97
immediate_just(1) + zip(immediate_just(2)) + subscribe 2227.59 ns 199.17 ns 205.62 ns 0.97

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 54.17 ns 19.09 ns 19.06 ns 1.00

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1283.51 ns 11.12 ns 11.12 ns 1.00
basic sample with immediate scheduler 1288.52 ns 6.17 ns 6.17 ns 1.00

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 1017.76 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 1078.66 ns 148.65 ns 135.43 ns 1.10

ci-windows

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 579.52 ns 4.02 ns 4.94 ns 0.81
Subscribe empty callbacks to empty observable via pipe operator 591.11 ns 4.01 ns 4.94 ns 0.81

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 1161.69 ns 5.55 ns 5.55 ns 1.00
from array of 1 - create + subscribe + current_thread 1441.31 ns 15.43 ns 15.43 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 3821.55 ns 185.09 ns 187.29 ns 0.99
defer from array of 1 - defer + create + subscribe + immediate 1214.80 ns 5.24 ns 5.24 ns 1.00
interval - interval + take(3) + subscribe + immediate 3172.67 ns 134.31 ns 133.63 ns 1.01
interval - interval + take(3) + subscribe + current_thread 3823.49 ns 53.32 ns 52.56 ns 1.01
from array of 1 - create + as_blocking + subscribe + new_thread 125975.00 ns 118877.78 ns 109600.00 ns 1.08
from array of 1000 - create + as_blocking + subscribe + new_thread 135285.71 ns 136087.50 ns 126862.50 ns 1.07

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1867.32 ns 12.86 ns 12.86 ns 1.00
immediate_just+filter(true)+subscribe 1338.23 ns 12.39 ns 11.73 ns 1.06
immediate_just(1,2)+skip(1)+subscribe 2298.39 ns 13.01 ns 14.33 ns 0.91
immediate_just(1,1,2)+distinct_until_changed()+subscribe 1381.78 ns 15.95 ns 18.24 ns 0.87
immediate_just(1,2)+first()+subscribe 2104.60 ns 12.64 ns 12.96 ns 0.98
immediate_just(1,2)+last()+subscribe 1480.96 ns 14.09 ns 14.16 ns 0.99
immediate_just+take_last(1)+subscribe 2051.56 ns 58.64 ns 57.85 ns 1.01

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 493.42 ns 6.17 ns 6.17 ns 1.00
current_thread scheduler create worker + schedule 662.84 ns 13.34 ns 13.32 ns 1.00
current_thread scheduler create worker + schedule + recursive schedule 1094.38 ns 104.21 ns 106.34 ns 0.98

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 1319.49 ns 12.34 ns 11.10 ns 1.11
immediate_just+scan(10, std::plus)+subscribe 1452.62 ns 21.27 ns 21.58 ns 0.99
immediate_just+flat_map(immediate_just(v*2))+subscribe 3554.04 ns 226.75 ns 225.17 ns 1.01
immediate_just+buffer(2)+subscribe 2351.04 ns 58.68 ns 57.31 ns 1.02
immediate_just+window(2)+subscribe + subscsribe inner 4112.06 ns 1223.31 ns 1246.73 ns 0.98

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 1315.33 ns 11.46 ns 11.46 ns 1.00
immediate_just+take_while(true)+subscribe 1324.36 ns 12.39 ns 11.74 ns 1.06

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 3581.75 ns 7.71 ns 7.71 ns 1.00

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 6291.21 ns 236.55 ns 231.96 ns 1.02
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 6056.45 ns 233.45 ns 229.03 ns 1.02
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 226.37 ns 220.70 ns 1.03
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 5552.75 ns 947.62 ns 952.45 ns 0.99
immediate_just(1) + zip(immediate_just(2)) + subscribe 3611.52 ns 536.04 ns 542.08 ns 0.99

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 36.52 ns 25.59 ns 25.59 ns 1.00

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1905.63 ns 56.67 ns 57.12 ns 0.99
basic sample with immediate scheduler 2229.43 ns 35.79 ns 35.79 ns 1.00

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 1454.01 ns 17.81 ns 19.97 ns 0.89

Error Handling Operators

name rxcpp rpp prev rpp ratio
create(on_next(1), on_error())+on_error_resume_next(immediate_just(2)))+subscribe 1954.48 ns 340.55 ns 338.26 ns 1.01

@sonarqubecloud
Copy link
Copy Markdown

@victimsnino victimsnino merged commit a8dd84d into v2 May 10, 2024
@victimsnino victimsnino deleted the add_get_value_to_behavior_subject branch May 10, 2024 11:39
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