Skip to content

add behavior_subject #553

Merged
AlexInLog merged 10 commits into
v2from
feature/behavior_subject
Apr 3, 2024
Merged

add behavior_subject #553
AlexInLog merged 10 commits into
v2from
feature/behavior_subject

Conversation

@AlexInLog

Copy link
Copy Markdown
Owner

@github-actions

github-actions Bot commented Apr 2, 2024

Copy link
Copy Markdown
Contributor

BENCHMARK RESULTS (AUTOGENERATED)

ci-ubuntu-gcc

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 306.22 ns 2.16 ns 2.21 ns 0.98
Subscribe empty callbacks to empty observable via pipe operator 301.03 ns 2.16 ns 2.16 ns 1.00

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 697.45 ns 0.31 ns 0.31 ns 1.00
from array of 1 - create + subscribe + current_thread 1047.48 ns 5.25 ns 5.26 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 2261.42 ns 112.48 ns 113.99 ns 0.99
defer from array of 1 - defer + create + subscribe + immediate 747.26 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 2161.46 ns 59.23 ns 59.23 ns 1.00
interval - interval + take(3) + subscribe + current_thread 3020.10 ns 32.73 ns 32.72 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1101.99 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 841.73 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 1000.87 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 881.36 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+first()+subscribe 1247.54 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+last()+subscribe 913.01 ns 0.31 ns 0.31 ns 1.01
immediate_just+take_last(1)+subscribe 1120.71 ns 18.84 ns 18.82 ns 1.00

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 262.10 ns 2.16 ns 2.16 ns 1.00
current_thread scheduler create worker + schedule 367.98 ns 7.10 ns 7.10 ns 1.00
current_thread scheduler create worker + schedule + recursive schedule 821.72 ns 64.47 ns 64.09 ns 1.01

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 841.27 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 913.07 ns 0.31 ns 0.31 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 2324.95 ns 165.07 ns 160.00 ns 1.03
immediate_just+buffer(2)+subscribe 1544.78 ns 14.52 ns 14.51 ns 1.00
immediate_just+window(2)+subscribe + subscsribe inner 2314.34 ns 1072.49 ns 1080.52 ns 0.99

Conditional Operators

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

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 1959.66 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 3536.87 ns 171.38 ns 189.41 ns 0.90
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3673.45 ns 165.90 ns 186.11 ns 0.89
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 167.24 ns 135.52 ns 1.23
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 3664.24 ns 1028.33 ns 988.70 ns 1.04
immediate_just(1) + zip(immediate_just(2)) + subscribe 2097.90 ns 211.93 ns 226.26 ns 0.94

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 34.51 ns 12.03 ns 12.02 ns 1.00

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1413.53 ns 14.51 ns 14.50 ns 1.00
basic sample with immediate scheduler 1374.18 ns 5.55 ns 5.55 ns 1.00

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 909.07 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.76 ns 122.41 ns 122.21 ns 1.00

ci-macos

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 970.56 ns 3.85 ns 3.87 ns 1.00
Subscribe empty callbacks to empty observable via pipe operator 970.75 ns 3.85 ns 3.84 ns 1.00

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 1924.99 ns 0.23 ns 0.23 ns 1.00
from array of 1 - create + subscribe + current_thread 2438.88 ns 25.39 ns 25.41 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 5452.80 ns 327.36 ns 332.77 ns 0.98
defer from array of 1 - defer + create + subscribe + immediate 1965.54 ns 0.23 ns 0.23 ns 1.00
interval - interval + take(3) + subscribe + immediate 4910.69 ns 113.97 ns 113.78 ns 1.00
interval - interval + take(3) + subscribe + current_thread 6190.47 ns 109.46 ns 104.88 ns 1.04

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 2848.78 ns 0.23 ns 0.23 ns 1.02
immediate_just+filter(true)+subscribe 2007.28 ns 0.22 ns 0.23 ns 0.98
immediate_just(1,2)+skip(1)+subscribe 2717.25 ns 0.23 ns 0.23 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 2069.87 ns 0.47 ns 0.45 ns 1.06
immediate_just(1,2)+first()+subscribe 3013.52 ns 0.22 ns 0.23 ns 0.98
immediate_just(1,2)+last()+subscribe 2265.29 ns 0.22 ns 0.23 ns 0.98
immediate_just+take_last(1)+subscribe 2866.63 ns 70.65 ns 70.02 ns 1.01

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 847.89 ns 4.03 ns 3.84 ns 1.05
current_thread scheduler create worker + schedule 1185.12 ns 38.48 ns 36.74 ns 1.05
current_thread scheduler create worker + schedule + recursive schedule 1995.71 ns 220.08 ns 211.34 ns 1.04

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 2091.73 ns 0.23 ns 0.23 ns 1.02
immediate_just+scan(10, std::plus)+subscribe 2327.21 ns 0.47 ns 0.46 ns 1.02
immediate_just+flat_map(immediate_just(v*2))+subscribe 5263.30 ns 414.09 ns 405.53 ns 1.02
immediate_just+buffer(2)+subscribe 2481.19 ns 70.28 ns 69.18 ns 1.02
immediate_just+window(2)+subscribe + subscsribe inner 5325.07 ns 2286.45 ns 2226.80 ns 1.03

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 2095.39 ns - - 0.00
immediate_just+take_while(true)+subscribe 2090.99 ns 0.23 ns 0.23 ns 1.02

Utility Operators

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

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 7581.13 ns 450.68 ns 440.71 ns 1.02
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 8373.88 ns 447.15 ns 436.51 ns 1.02
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 474.52 ns 463.12 ns 1.02
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 7934.57 ns 1890.73 ns 1860.13 ns 1.02
immediate_just(1) + zip(immediate_just(2)) + subscribe 5154.12 ns 864.50 ns 838.81 ns 1.03

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 73.49 ns 50.94 ns 48.35 ns 1.05

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 2752.48 ns 109.75 ns 106.79 ns 1.03
basic sample with immediate scheduler 2758.85 ns 14.33 ns 14.72 ns 0.97

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 2408.52 ns 0.24 ns 0.23 ns 1.03

Error Handling Operators

name rxcpp rpp prev rpp ratio
create(on_next(1), on_error())+on_error_resume_next(immediate_just(2)))+subscribe 6533.15 ns 4166.34 ns 3898.25 ns 1.07

ci-ubuntu-clang

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 276.47 ns 1.56 ns 1.54 ns 1.01
Subscribe empty callbacks to empty observable via pipe operator 280.24 ns 1.57 ns 1.54 ns 1.02

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 568.28 ns 0.31 ns 0.31 ns 1.00
from array of 1 - create + subscribe + current_thread 787.81 ns 5.55 ns 5.55 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 1871.23 ns 113.20 ns 112.47 ns 1.01
defer from array of 1 - defer + create + subscribe + immediate 594.57 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 1553.81 ns 58.26 ns 58.31 ns 1.00
interval - interval + take(3) + subscribe + current_thread 2083.90 ns 31.47 ns 31.47 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 914.36 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 670.34 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 857.47 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 699.38 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+first()+subscribe 1084.17 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+last()+subscribe 731.91 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 951.22 ns 0.31 ns 0.31 ns 1.00

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 205.88 ns 1.55 ns 1.54 ns 1.01
current_thread scheduler create worker + schedule 310.97 ns 5.57 ns 5.57 ns 1.00
current_thread scheduler create worker + schedule + recursive schedule 623.54 ns 59.26 ns 59.54 ns 1.00

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 655.85 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 722.01 ns 0.31 ns 0.32 ns 0.96
immediate_just+flat_map(immediate_just(v*2))+subscribe 1781.09 ns 119.88 ns 119.96 ns 1.00
immediate_just+buffer(2)+subscribe 1363.06 ns 14.50 ns 14.80 ns 0.98
immediate_just+window(2)+subscribe + subscsribe inner 2117.97 ns 817.82 ns 830.10 ns 0.99

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 660.44 ns - - 0.00
immediate_just+take_while(true)+subscribe 672.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 1570.18 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 2599.93 ns 125.14 ns 125.15 ns 1.00
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3010.41 ns 121.45 ns 121.52 ns 1.00
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 110.86 ns 111.02 ns 1.00
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 2833.96 ns 728.15 ns 799.45 ns 0.91
immediate_just(1) + zip(immediate_just(2)) + subscribe 1783.27 ns 166.62 ns 170.46 ns 0.98

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 23.34 ns 13.89 ns 14.19 ns 0.98

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1050.47 ns 13.27 ns 13.27 ns 1.00
basic sample with immediate scheduler 1018.53 ns 6.17 ns 6.17 ns 1.00

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 732.78 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 872.09 ns 124.41 ns 124.75 ns 1.00

ci-windows

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 581.83 ns 4.94 ns 4.94 ns 1.00
Subscribe empty callbacks to empty observable via pipe operator 592.00 ns 4.94 ns 4.94 ns 1.00

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 1186.87 ns 5.55 ns 5.55 ns 1.00
from array of 1 - create + subscribe + current_thread 1469.99 ns 18.52 ns 18.50 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 4692.13 ns 169.83 ns 170.56 ns 1.00
defer from array of 1 - defer + create + subscribe + immediate 1199.23 ns 5.55 ns 5.55 ns 1.00
interval - interval + take(3) + subscribe + immediate 3132.32 ns 133.63 ns 133.55 ns 1.00
interval - interval + take(3) + subscribe + current_thread 3482.64 ns 58.67 ns 58.62 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1860.33 ns 12.86 ns 12.87 ns 1.00
immediate_just+filter(true)+subscribe 1682.07 ns 11.71 ns 11.72 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 2045.27 ns 13.12 ns 13.08 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 1400.28 ns 15.77 ns 15.78 ns 1.00
immediate_just(1,2)+first()+subscribe 2198.57 ns 12.95 ns 12.97 ns 1.00
immediate_just(1,2)+last()+subscribe 1470.59 ns 14.11 ns 14.10 ns 1.00
immediate_just+take_last(1)+subscribe 2044.92 ns 60.36 ns 59.47 ns 1.01

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 493.95 ns 6.48 ns 6.17 ns 1.05
current_thread scheduler create worker + schedule 665.80 ns 18.20 ns 18.19 ns 1.00
current_thread scheduler create worker + schedule + recursive schedule 1113.76 ns 117.45 ns 116.12 ns 1.01

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 1324.28 ns 11.21 ns 11.19 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 1430.22 ns 21.59 ns 21.60 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 3870.11 ns 226.88 ns 233.78 ns 0.97
immediate_just+buffer(2)+subscribe 2331.72 ns 58.49 ns 58.94 ns 0.99
immediate_just+window(2)+subscribe + subscsribe inner 4076.19 ns 1580.67 ns 1542.58 ns 1.02

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 1323.25 ns 11.46 ns 11.44 ns 1.00
immediate_just+take_while(true)+subscribe 1331.45 ns 11.70 ns 11.69 ns 1.00

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 3850.56 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 5200.00 ns 250.36 ns 252.59 ns 0.99
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 6658.96 ns 242.76 ns 236.16 ns 1.03
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 225.59 ns 229.35 ns 0.98
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 6235.50 ns 957.37 ns 979.24 ns 0.98
immediate_just(1) + zip(immediate_just(2)) + subscribe 3897.81 ns 546.14 ns 546.71 ns 1.00

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 36.22 ns 25.90 ns 26.84 ns 0.96

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1877.44 ns 59.39 ns 59.34 ns 1.00
basic sample with immediate scheduler 1898.41 ns 35.48 ns 35.48 ns 1.00

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 1474.86 ns 19.98 ns 19.99 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 1924.05 ns 338.40 ns 337.08 ns 1.00

@sonarqubecloud

sonarqubecloud Bot commented Apr 2, 2024

Copy link
Copy Markdown

@AlexInLog AlexInLog merged commit 1fa2a19 into v2 Apr 3, 2024
@AlexInLog AlexInLog deleted the feature/behavior_subject branch April 3, 2024 08:07
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