Skip to content

Add window_toggle operator#506

Merged
AlexInLog merged 8 commits into
v2from
feature/window_toggle
Jan 14, 2024
Merged

Add window_toggle operator#506
AlexInLog merged 8 commits into
v2from
feature/window_toggle

Conversation

@AlexInLog

Copy link
Copy Markdown
Owner

No description provided.

@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 303.69 ns 1.54 ns 1.23 ns 1.25
Subscribe empty callbacks to empty observable via pipe operator 308.47 ns 1.54 ns 1.24 ns 1.25

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 685.52 ns 0.31 ns 0.31 ns 1.00
from array of 1 - create + subscribe + current_thread 1013.00 ns 5.25 ns 5.25 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 2225.45 ns 79.30 ns 79.40 ns 1.00
defer from array of 1 - defer + create + subscribe + immediate 727.95 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 2115.69 ns 58.03 ns 58.44 ns 0.99
interval - interval + take(3) + subscribe + current_thread 3045.00 ns 32.12 ns 32.18 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1076.72 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 825.53 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 989.03 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 841.18 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+first()+subscribe 1239.66 ns 0.62 ns 0.31 ns 2.00
immediate_just(1,2)+last()+subscribe 905.26 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 1117.37 ns 17.91 ns 18.22 ns 0.98

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 263.59 ns 1.54 ns 1.24 ns 1.25
current_thread scheduler create worker + schedule 365.85 ns 6.49 ns 6.18 ns 1.05
current_thread scheduler create worker + schedule + recursive schedule 1101.07 ns 67.34 ns 63.90 ns 1.05

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 831.75 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 890.27 ns 0.31 ns 0.31 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 2320.35 ns 96.89 ns 97.67 ns 0.99
immediate_just+buffer(2)+subscribe 1507.70 ns 13.58 ns 13.89 ns 0.98
immediate_just+window(2)+subscribe + subscsribe inner 2437.85 ns 680.44 ns 643.47 ns 1.06

Conditional Operators

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

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 1965.58 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 3473.17 ns 110.94 ns 118.46 ns 0.94
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3612.43 ns 105.65 ns 106.89 ns 0.99
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 86.43 ns 85.28 ns 1.01
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 3510.55 ns 471.23 ns 480.59 ns 0.98

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 34.51 ns 22.85 ns 23.44 ns 0.97

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1334.99 ns 14.20 ns 15.81 ns 0.90
basic sample with immediate scheduler 1359.52 ns 5.55 ns 5.55 ns 1.00

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 907.08 ns 0.31 ns 0.31 ns 1.00

ci-macos

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 976.56 ns 2.36 ns 2.87 ns 0.82
Subscribe empty callbacks to empty observable via pipe operator 974.44 ns 2.36 ns 2.36 ns 1.00

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 1932.30 ns 0.23 ns 0.23 ns 1.00
from array of 1 - create + subscribe + current_thread 2431.93 ns 25.21 ns 26.16 ns 0.96
concat_as_source of just(1 immediate) create + subscribe 5475.24 ns 254.92 ns 255.21 ns 1.00
defer from array of 1 - defer + create + subscribe + immediate 1978.49 ns 0.23 ns 0.23 ns 1.00
interval - interval + take(3) + subscribe + immediate 4963.96 ns 113.42 ns 116.13 ns 0.98
interval - interval + take(3) + subscribe + current_thread 6067.22 ns 106.50 ns 107.15 ns 0.99

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 2875.27 ns 0.24 ns 0.23 ns 1.02
immediate_just+filter(true)+subscribe 2119.01 ns 0.23 ns 0.23 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 2748.44 ns 0.23 ns 0.23 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 2087.79 ns 0.47 ns 0.47 ns 1.00
immediate_just(1,2)+first()+subscribe 3179.02 ns 0.23 ns 0.23 ns 1.00
immediate_just(1,2)+last()+subscribe 2373.87 ns 0.23 ns 0.23 ns 1.00
immediate_just+take_last(1)+subscribe 3035.37 ns 80.64 ns 69.54 ns 1.16

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 846.36 ns 3.10 ns 3.30 ns 0.94
current_thread scheduler create worker + schedule 1181.08 ns 34.94 ns 35.77 ns 0.98
current_thread scheduler create worker + schedule + recursive schedule 1997.99 ns 219.37 ns 217.18 ns 1.01

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 2115.30 ns 0.23 ns 0.24 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 2356.30 ns 0.47 ns 0.47 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 5385.92 ns 333.09 ns 332.11 ns 1.00
immediate_just+buffer(2)+subscribe 2581.62 ns 79.82 ns 67.67 ns 1.18
immediate_just+window(2)+subscribe + subscsribe inner 5436.02 ns 1868.49 ns 1862.77 ns 1.00

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 2102.48 ns - - 0.00
immediate_just+take_while(true)+subscribe 2116.85 ns 0.23 ns 0.23 ns 1.00

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 4943.93 ns 0.23 ns 0.23 ns 1.00

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 7532.42 ns 371.03 ns 367.97 ns 1.01
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 8457.81 ns 377.33 ns 375.18 ns 1.01
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 400.69 ns 402.11 ns 1.00
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 8009.66 ns 1401.38 ns 1388.79 ns 1.01

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 77.73 ns 71.25 ns 74.63 ns 0.95

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 2806.89 ns 107.75 ns 109.34 ns 0.99
basic sample with immediate scheduler 2756.26 ns 14.86 ns 16.82 ns 0.88

Aggregating Operators

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

ci-ubuntu-clang

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 268.45 ns 0.88 ns 0.88 ns 1.00
Subscribe empty callbacks to empty observable via pipe operator 271.35 ns 0.88 ns 0.88 ns 1.00

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 571.64 ns 0.31 ns 0.31 ns 1.00
from array of 1 - create + subscribe + current_thread 795.44 ns 5.56 ns 5.55 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 1921.33 ns 71.26 ns 71.84 ns 0.99
defer from array of 1 - defer + create + subscribe + immediate 585.46 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 1522.30 ns 57.08 ns 57.03 ns 1.00
interval - interval + take(3) + subscribe + current_thread 2083.73 ns 30.91 ns 30.86 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 916.43 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 657.99 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 862.28 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 694.81 ns 0.31 ns 0.62 ns 0.50
immediate_just(1,2)+first()+subscribe 1141.60 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+last()+subscribe 746.33 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 976.42 ns 0.31 ns 0.31 ns 1.00

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 199.82 ns 0.88 ns 0.88 ns 1.00
current_thread scheduler create worker + schedule 315.61 ns 5.57 ns 5.56 ns 1.00
current_thread scheduler create worker + schedule + recursive schedule 627.06 ns 58.13 ns 58.88 ns 0.99

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 669.76 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 711.86 ns 0.31 ns 0.31 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 1780.99 ns 74.57 ns 76.49 ns 0.97
immediate_just+buffer(2)+subscribe 1333.09 ns 13.27 ns 13.27 ns 1.00
immediate_just+window(2)+subscribe + subscsribe inner 2114.71 ns 622.07 ns 600.46 ns 1.04

Conditional Operators

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

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 1644.57 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 2533.72 ns 86.17 ns 84.58 ns 1.02
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 2964.06 ns 93.03 ns 93.83 ns 0.99
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 78.35 ns 78.49 ns 1.00
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 2638.39 ns 548.76 ns 552.20 ns 0.99

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 26.27 ns 24.30 ns 24.35 ns 1.00

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1030.50 ns 14.51 ns 13.27 ns 1.09
basic sample with immediate scheduler 1035.63 ns 6.17 ns 5.86 ns 1.05

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 738.96 ns 0.31 ns 0.31 ns 1.00

ci-windows

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 577.60 ns 3.09 ns 3.09 ns 1.00
Subscribe empty callbacks to empty observable via pipe operator 584.67 ns 3.09 ns 3.09 ns 1.00

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 1180.26 ns 4.93 ns 5.24 ns 0.94
from array of 1 - create + subscribe + current_thread 1436.20 ns 20.37 ns 20.44 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 4633.63 ns 156.13 ns 161.25 ns 0.97
defer from array of 1 - defer + create + subscribe + immediate 1222.78 ns 5.24 ns 4.94 ns 1.06
interval - interval + take(3) + subscribe + immediate 2936.33 ns 132.01 ns 131.06 ns 1.01
interval - interval + take(3) + subscribe + current_thread 3471.67 ns 60.45 ns 60.45 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1886.01 ns 12.87 ns 12.87 ns 1.00
immediate_just+filter(true)+subscribe 1343.38 ns 12.33 ns 12.32 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 1845.57 ns 13.00 ns 13.09 ns 0.99
immediate_just(1,1,2)+distinct_until_changed()+subscribe 1386.95 ns 17.29 ns 15.94 ns 1.08
immediate_just(1,2)+first()+subscribe 2140.28 ns 12.97 ns 12.97 ns 1.00
immediate_just(1,2)+last()+subscribe 1531.34 ns 14.17 ns 14.12 ns 1.00
immediate_just+take_last(1)+subscribe 2076.22 ns 60.72 ns 59.55 ns 1.02

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 491.74 ns 4.63 ns 4.32 ns 1.07
current_thread scheduler create worker + schedule 670.20 ns 16.97 ns 16.97 ns 1.00
current_thread scheduler create worker + schedule + recursive schedule 1385.75 ns 106.16 ns 105.26 ns 1.01

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 1336.09 ns 12.26 ns 12.26 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 1447.23 ns 21.27 ns 21.27 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 3984.11 ns 204.11 ns 195.01 ns 1.05
immediate_just+buffer(2)+subscribe 2344.74 ns 58.56 ns 59.26 ns 0.99
immediate_just+window(2)+subscribe + subscsribe inner 4143.94 ns 1097.42 ns 1099.35 ns 1.00

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 1341.30 ns 11.41 ns 11.45 ns 1.00
immediate_just+take_while(true)+subscribe 1348.49 ns 12.33 ns 12.33 ns 1.00

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 3228.30 ns 7.40 ns 7.09 ns 1.04

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 5354.90 ns 223.21 ns 220.12 ns 1.01
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 5968.21 ns 222.71 ns 216.73 ns 1.03
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 218.07 ns 215.61 ns 1.01
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 5916.86 ns 769.78 ns 769.02 ns 1.00

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 37.06 ns 37.32 ns 37.64 ns 0.99

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1887.71 ns 60.77 ns 59.85 ns 1.02
basic sample with immediate scheduler 1900.92 ns 39.81 ns 37.03 ns 1.07

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 1478.70 ns 20.07 ns 19.98 ns 1.00

@codecov

codecov Bot commented Jan 14, 2024

Copy link
Copy Markdown

Codecov Report

All modified and coverable lines are covered by tests ✅

Comparison is base (d797fd5) 95.56% compared to head (c7aba62) 95.80%.

Additional details and impacted files
@@            Coverage Diff             @@
##               v2     #506      +/-   ##
==========================================
+ Coverage   95.56%   95.80%   +0.23%     
==========================================
  Files          77       78       +1     
  Lines        1917     1977      +60     
==========================================
+ Hits         1832     1894      +62     
+ Misses         85       83       -2     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Passed Quality Gate passed

The SonarCloud Quality Gate passed, but some issues were introduced.

3 New issues
0 Security Hotspots
52.7% Coverage on New Code
0.4% Duplication on New Code

See analysis details on SonarCloud

@AlexInLog AlexInLog marked this pull request as ready for review January 14, 2024 20:54
@AlexInLog AlexInLog merged commit 8221fc1 into v2 Jan 14, 2024
@AlexInLog AlexInLog deleted the feature/window_toggle branch January 14, 2024 20:55
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