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

Optionally use defer_for/defer_to #530

Merged
merged 4 commits into from
Feb 19, 2024
Merged

Optionally use defer_for/defer_to #530

merged 4 commits into from
Feb 19, 2024

Conversation

victimsnino
Copy link
Owner

No description provided.

Copy link
Contributor

github-actions bot commented Feb 18, 2024

BENCHMARK RESULTS (AUTOGENERATED)

ci-ubuntu-gcc

General

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

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 689.17 ns 0.31 ns 0.31 ns 1.00
from array of 1 - create + subscribe + current_thread 1039.83 ns 5.25 ns 5.25 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 2234.33 ns 114.79 ns 128.15 ns 0.90
defer from array of 1 - defer + create + subscribe + immediate 723.97 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 2099.12 ns 58.01 ns 58.04 ns 1.00
interval - interval + take(3) + subscribe + current_thread 3033.86 ns 32.14 ns 32.11 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1070.56 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 852.87 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 989.99 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 852.68 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+first()+subscribe 1223.50 ns 0.62 ns 0.62 ns 1.00
immediate_just(1,2)+last()+subscribe 912.29 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 1094.20 ns 17.59 ns 18.22 ns 0.97

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 264.05 ns 2.16 ns 2.16 ns 1.00
current_thread scheduler create worker + schedule 364.51 ns 7.41 ns 7.41 ns 1.00
current_thread scheduler create worker + schedule + recursive schedule 801.61 ns 64.38 ns 64.21 ns 1.00

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 842.13 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 882.29 ns 0.31 ns 0.31 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 2339.49 ns 157.95 ns 161.70 ns 0.98
immediate_just+buffer(2)+subscribe 1513.48 ns 13.91 ns 14.51 ns 0.96
immediate_just+window(2)+subscribe + subscsribe inner 2345.24 ns 1030.16 ns 1090.88 ns 0.94

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 847.63 ns - - 0.00
immediate_just+take_while(true)+subscribe 826.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 1946.99 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 3415.00 ns 172.00 ns 187.04 ns 0.92
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3645.66 ns 160.65 ns 160.52 ns 1.00
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 136.07 ns 134.71 ns 1.01
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 3543.69 ns 969.41 ns 1079.34 ns 0.90
immediate_just(1) + zip(immediate_just(2)) + subscribe 2135.75 ns 216.76 ns 212.02 ns 1.02

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 34.58 ns 11.72 ns 11.72 ns 1.00

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1362.42 ns 16.37 ns 16.35 ns 1.00
basic sample with immediate scheduler 1404.07 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 1069.14 ns 124.21 ns 123.57 ns 1.01

ci-macos

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 1178.43 ns 4.64 ns 5.37 ns 0.86
Subscribe empty callbacks to empty observable via pipe operator 1198.31 ns 4.86 ns 5.37 ns 0.90

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 2307.78 ns 0.29 ns 0.46 ns 0.62
from array of 1 - create + subscribe + current_thread 2482.50 ns 28.97 ns 9.64 ns 3.01
concat_as_source of just(1 immediate) create + subscribe 5392.04 ns 327.12 ns 428.88 ns 0.76
defer from array of 1 - defer + create + subscribe + immediate 2282.97 ns 0.25 ns 0.28 ns 0.89
interval - interval + take(3) + subscribe + immediate 4955.94 ns 137.58 ns 93.94 ns 1.46
interval - interval + take(3) + subscribe + current_thread 7057.73 ns 113.48 ns 61.23 ns 1.85

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 3143.03 ns 0.28 ns 0.28 ns 1.00
immediate_just+filter(true)+subscribe 2277.09 ns 0.23 ns 0.28 ns 0.84
immediate_just(1,2)+skip(1)+subscribe 3296.07 ns 0.25 ns 0.28 ns 0.90
immediate_just(1,1,2)+distinct_until_changed()+subscribe 2534.80 ns 0.56 ns 0.56 ns 1.00
immediate_just(1,2)+first()+subscribe 3936.79 ns 0.26 ns 0.28 ns 0.95
immediate_just(1,2)+last()+subscribe 2734.15 ns 0.29 ns 0.28 ns 1.03
immediate_just+take_last(1)+subscribe 3020.76 ns 71.74 ns 72.76 ns 0.99

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 860.36 ns 4.63 ns 5.74 ns 0.81
current_thread scheduler create worker + schedule 1279.20 ns 41.48 ns 15.34 ns 2.70
current_thread scheduler create worker + schedule + recursive schedule 2009.66 ns 247.60 ns 175.90 ns 1.41

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 2471.75 ns 0.27 ns 0.28 ns 0.96
immediate_just+scan(10, std::plus)+subscribe 2818.58 ns 0.56 ns 0.56 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 6892.37 ns 523.35 ns 463.73 ns 1.13
immediate_just+buffer(2)+subscribe 3162.22 ns 91.81 ns 70.00 ns 1.31
immediate_just+window(2)+subscribe + subscsribe inner 6545.12 ns 2796.55 ns 2753.30 ns 1.02

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 2118.50 ns - - 0.00
immediate_just+take_while(true)+subscribe 2345.07 ns 0.25 ns 0.28 ns 0.89

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 5937.65 ns 0.29 ns 0.28 ns 1.03

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 7633.90 ns 453.29 ns 534.76 ns 0.85
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 8686.95 ns 515.64 ns 518.16 ns 1.00
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 475.20 ns 533.50 ns 0.89
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 8007.26 ns 1906.68 ns 2400.01 ns 0.79
immediate_just(1) + zip(immediate_just(2)) + subscribe 5184.31 ns 822.89 ns 963.80 ns 0.85

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 85.91 ns 52.34 ns 62.16 ns 0.84

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 3433.77 ns 118.43 ns 46.58 ns 2.54
basic sample with immediate scheduler 3111.65 ns 18.02 ns 6.39 ns 2.82

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 2873.43 ns 0.28 ns 0.28 ns 1.01

Error Handling Operators

name rxcpp rpp prev rpp ratio
create(on_next(1), on_error())+on_error_resume_next(immediate_just(2)))+subscribe 7841.58 ns 4879.48 ns 5077.39 ns 0.96

ci-ubuntu-clang

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 273.18 ns 1.54 ns 0.88 ns 1.76
Subscribe empty callbacks to empty observable via pipe operator 269.85 ns 1.54 ns 0.88 ns 1.76

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 565.71 ns 0.40 ns 0.31 ns 1.29
from array of 1 - create + subscribe + current_thread 804.54 ns 5.56 ns 5.56 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 1984.24 ns 112.54 ns 113.15 ns 0.99
defer from array of 1 - defer + create + subscribe + immediate 591.39 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 1520.11 ns 57.03 ns 57.07 ns 1.00
interval - interval + take(3) + subscribe + current_thread 2058.90 ns 30.88 ns 30.88 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 941.01 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 661.71 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 849.88 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 675.74 ns 0.62 ns 0.62 ns 1.00
immediate_just(1,2)+first()+subscribe 1062.01 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+last()+subscribe 730.75 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 944.28 ns 0.31 ns 0.31 ns 1.00

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 199.54 ns 1.54 ns 0.88 ns 1.76
current_thread scheduler create worker + schedule 307.26 ns 5.58 ns 5.89 ns 0.95
current_thread scheduler create worker + schedule + recursive schedule 617.28 ns 58.92 ns 58.49 ns 1.01

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 655.92 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 705.26 ns 0.31 ns 0.31 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 1864.61 ns 122.10 ns 122.11 ns 1.00
immediate_just+buffer(2)+subscribe 1333.00 ns 14.51 ns 13.59 ns 1.07
immediate_just+window(2)+subscribe + subscsribe inner 2151.37 ns 808.06 ns 803.56 ns 1.01

Conditional Operators

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

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 1537.55 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.45 ns 127.53 ns 126.67 ns 1.01
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3023.37 ns 121.50 ns 122.87 ns 0.99
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 114.26 ns 112.80 ns 1.01
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 2617.18 ns 739.25 ns 732.14 ns 1.01
immediate_just(1) + zip(immediate_just(2)) + subscribe 1769.38 ns 175.05 ns 174.22 ns 1.00

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 23.43 ns 14.18 ns 14.49 ns 0.98

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1027.90 ns 13.58 ns 13.58 ns 1.00
basic sample with immediate scheduler 1047.44 ns 5.86 ns 5.86 ns 1.00

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 734.40 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 836.75 ns 125.40 ns 132.41 ns 0.95

ci-windows

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 582.59 ns 4.78 ns 4.75 ns 1.01
Subscribe empty callbacks to empty observable via pipe operator 591.92 ns 4.75 ns 4.82 ns 0.99

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 1187.79 ns 5.24 ns 5.24 ns 1.00
from array of 1 - create + subscribe + current_thread 1455.72 ns 19.74 ns 19.15 ns 1.03
concat_as_source of just(1 immediate) create + subscribe 4720.48 ns 171.83 ns 168.43 ns 1.02
defer from array of 1 - defer + create + subscribe + immediate 1231.31 ns 4.93 ns 4.93 ns 1.00
interval - interval + take(3) + subscribe + immediate 3145.23 ns 129.46 ns 129.57 ns 1.00
interval - interval + take(3) + subscribe + current_thread 3475.99 ns 59.51 ns 59.56 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1856.94 ns 12.82 ns 12.85 ns 1.00
immediate_just+filter(true)+subscribe 1711.89 ns 11.69 ns 11.70 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 1786.03 ns 13.87 ns 13.50 ns 1.03
immediate_just(1,1,2)+distinct_until_changed()+subscribe 1381.17 ns 15.87 ns 15.79 ns 1.00
immediate_just(1,2)+first()+subscribe 2087.37 ns 12.64 ns 12.64 ns 1.00
immediate_just(1,2)+last()+subscribe 1482.87 ns 14.08 ns 14.03 ns 1.00
immediate_just+take_last(1)+subscribe 2076.36 ns 62.64 ns 62.89 ns 1.00

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 497.24 ns 6.93 ns 6.97 ns 0.99
current_thread scheduler create worker + schedule 665.71 ns 17.59 ns 17.60 ns 1.00
current_thread scheduler create worker + schedule + recursive schedule 1103.18 ns 109.92 ns 111.00 ns 0.99

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 1330.47 ns 11.25 ns 11.24 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 1431.07 ns 21.58 ns 21.59 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 3936.77 ns 228.88 ns 228.10 ns 1.00
immediate_just+buffer(2)+subscribe 2367.47 ns 58.76 ns 59.21 ns 0.99
immediate_just+window(2)+subscribe + subscsribe inner 4136.82 ns 1554.16 ns 1556.30 ns 1.00

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 1335.68 ns 11.44 ns 11.46 ns 1.00
immediate_just+take_while(true)+subscribe 1331.59 ns 11.72 ns 11.70 ns 1.00

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 4116.79 ns 7.09 ns 7.09 ns 1.00

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 5185.94 ns 233.68 ns 231.46 ns 1.01
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 6437.64 ns 228.78 ns 230.61 ns 0.99
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 232.92 ns 235.28 ns 0.99
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 6281.48 ns 975.14 ns 974.33 ns 1.00
immediate_just(1) + zip(immediate_just(2)) + subscribe 4120.08 ns 548.22 ns 545.22 ns 1.01

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 36.14 ns 25.90 ns 25.91 ns 1.00

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1854.61 ns 59.60 ns 59.78 ns 1.00
basic sample with immediate scheduler 1870.20 ns 35.17 ns 35.18 ns 1.00

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 1466.21 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 1954.31 ns 345.09 ns 349.85 ns 0.99

Copy link

sonarcloud bot commented Feb 19, 2024

@victimsnino victimsnino merged commit 07ad6dd into v2 Feb 19, 2024
27 checks passed
@victimsnino victimsnino deleted the defer_to_or_defer_for branch February 19, 2024 08:06
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