Skip to content

reduce get_observer() calls#505

Merged
AlexInLog merged 4 commits into
v2from
reduce_get_observer_calls
Jan 13, 2024
Merged

reduce get_observer() calls#505
AlexInLog merged 4 commits into
v2from
reduce_get_observer_calls

Conversation

@AlexInLog

Copy link
Copy Markdown
Owner

No description provided.

@github-actions

github-actions Bot commented Jan 13, 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 304.06 ns 1.54 ns 1.54 ns 1.00
Subscribe empty callbacks to empty observable via pipe operator 305.37 ns 1.54 ns 1.54 ns 1.00

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 690.63 ns 0.31 ns 0.62 ns 0.50
from array of 1 - create + subscribe + current_thread 1022.31 ns 5.25 ns 5.25 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 2255.39 ns 80.04 ns 79.76 ns 1.00
defer from array of 1 - defer + create + subscribe + immediate 736.29 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 2126.50 ns 58.03 ns 58.02 ns 1.00
interval - interval + take(3) + subscribe + current_thread 3035.62 ns 32.16 ns 32.11 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1087.09 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 837.65 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 992.45 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 854.49 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+first()+subscribe 1240.01 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+last()+subscribe 937.19 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 1124.79 ns 18.53 ns 17.91 ns 1.03

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 264.27 ns 1.54 ns 1.54 ns 1.00
current_thread scheduler create worker + schedule 365.75 ns 6.18 ns 6.18 ns 1.00
current_thread scheduler create worker + schedule + recursive schedule 810.60 ns 63.10 ns 62.80 ns 1.00

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 845.25 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 886.90 ns 0.31 ns 0.31 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 2334.69 ns 97.02 ns 96.01 ns 1.01
immediate_just+buffer(2)+subscribe 1581.11 ns 14.21 ns 13.90 ns 1.02
immediate_just+window(2)+subscribe + subscsribe inner 2371.85 ns 681.01 ns 735.71 ns 0.93

Conditional Operators

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

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 1964.50 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 3385.61 ns 119.46 ns 113.90 ns 1.05
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3690.61 ns 108.46 ns 107.73 ns 1.01
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 86.42 ns 87.06 ns 0.99
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 3553.30 ns 544.62 ns 588.63 ns 0.93

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 34.51 ns 23.67 ns 22.72 ns 1.04

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1363.86 ns 15.43 ns 15.44 ns 1.00
basic sample with immediate scheduler 1390.70 ns 5.55 ns 5.55 ns 1.00

Aggregating Operators

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

ci-macos

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 1021.35 ns 2.66 ns 2.37 ns 1.12
Subscribe empty callbacks to empty observable via pipe operator 1022.33 ns 2.72 ns 2.37 ns 1.15

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 1976.33 ns 0.24 ns 0.23 ns 1.04
from array of 1 - create + subscribe + current_thread 2490.28 ns 26.10 ns 25.64 ns 1.02
concat_as_source of just(1 immediate) create + subscribe 5575.32 ns 265.70 ns 258.14 ns 1.03
defer from array of 1 - defer + create + subscribe + immediate 2023.97 ns 0.24 ns 0.24 ns 0.98
interval - interval + take(3) + subscribe + immediate 5064.38 ns 117.44 ns 122.03 ns 0.96
interval - interval + take(3) + subscribe + current_thread 6158.23 ns 107.33 ns 110.42 ns 0.97

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 2885.19 ns 0.26 ns 0.24 ns 1.09
immediate_just+filter(true)+subscribe 2119.88 ns 0.23 ns 0.25 ns 0.93
immediate_just(1,2)+skip(1)+subscribe 2764.60 ns 0.26 ns 0.24 ns 1.09
immediate_just(1,1,2)+distinct_until_changed()+subscribe 2080.39 ns 0.47 ns 0.52 ns 0.89
immediate_just(1,2)+first()+subscribe 3211.08 ns 0.23 ns 0.24 ns 0.99
immediate_just(1,2)+last()+subscribe 2485.22 ns 0.23 ns 0.25 ns 0.95
immediate_just+take_last(1)+subscribe 3038.80 ns 71.77 ns 82.98 ns 0.86

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 896.46 ns 3.68 ns 3.16 ns 1.16
current_thread scheduler create worker + schedule 1236.14 ns 36.84 ns 36.89 ns 1.00
current_thread scheduler create worker + schedule + recursive schedule 2086.06 ns 230.57 ns 217.99 ns 1.06

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 2116.83 ns 0.23 ns 0.23 ns 0.99
immediate_just+scan(10, std::plus)+subscribe 2356.36 ns 0.47 ns 0.51 ns 0.92
immediate_just+flat_map(immediate_just(v*2))+subscribe 5318.84 ns 331.65 ns 334.04 ns 0.99
immediate_just+buffer(2)+subscribe 2533.20 ns 70.13 ns 68.62 ns 1.02
immediate_just+window(2)+subscribe + subscsribe inner 5713.10 ns 1941.54 ns 1922.45 ns 1.01

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 2102.20 ns - - 0.00
immediate_just+take_while(true)+subscribe 2190.50 ns 0.25 ns 0.26 ns 0.96

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 6409.86 ns 0.23 ns 0.24 ns 0.97

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 7848.33 ns 395.94 ns 393.79 ns 1.01
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 8806.46 ns 400.14 ns 379.42 ns 1.05
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 405.46 ns 404.23 ns 1.00
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 8163.02 ns 1393.26 ns 1580.58 ns 0.88

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 76.16 ns 83.21 ns 76.06 ns 1.09

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 2747.65 ns 102.68 ns 126.13 ns 0.81
basic sample with immediate scheduler 2906.15 ns 18.73 ns 15.32 ns 1.22

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 2764.25 ns 0.35 ns 0.28 ns 1.28

ci-ubuntu-clang

General

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

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 575.89 ns 0.31 ns 0.31 ns 1.00
from array of 1 - create + subscribe + current_thread 784.59 ns 5.55 ns 5.56 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 1904.18 ns 73.33 ns 71.53 ns 1.03
defer from array of 1 - defer + create + subscribe + immediate 577.75 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 1534.69 ns 57.09 ns 57.07 ns 1.00
interval - interval + take(3) + subscribe + current_thread 2103.83 ns 30.85 ns 30.88 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 913.80 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 667.05 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 857.40 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 691.54 ns 0.62 ns 0.31 ns 2.00
immediate_just(1,2)+first()+subscribe 1062.57 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+last()+subscribe 739.06 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 959.51 ns 0.31 ns 0.31 ns 1.00

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 196.60 ns 0.88 ns 0.88 ns 1.00
current_thread scheduler create worker + schedule 297.68 ns 5.56 ns 5.57 ns 1.00
current_thread scheduler create worker + schedule + recursive schedule 622.72 ns 57.98 ns 58.82 ns 0.99

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 658.85 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 716.62 ns 0.31 ns 0.31 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 1802.01 ns 77.66 ns 77.00 ns 1.01
immediate_just+buffer(2)+subscribe 1351.03 ns 13.90 ns 14.51 ns 0.96
immediate_just+window(2)+subscribe + subscsribe inner 2184.39 ns 600.43 ns 592.49 ns 1.01

Conditional Operators

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

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 1589.89 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 2522.98 ns 86.53 ns 86.11 ns 1.00
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3031.89 ns 94.11 ns 96.47 ns 0.98
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 80.51 ns 81.18 ns 0.99
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 2638.94 ns 547.16 ns 560.97 ns 0.98

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 22.92 ns 24.37 ns 24.37 ns 1.00

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1084.07 ns 13.28 ns 13.59 ns 0.98
basic sample with immediate scheduler 1041.75 ns 5.86 ns 6.17 ns 0.95

Aggregating Operators

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

ci-windows

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 583.77 ns 2.47 ns 3.08 ns 0.80
Subscribe empty callbacks to empty observable via pipe operator 589.91 ns 2.47 ns 3.08 ns 0.80

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 1167.35 ns 5.24 ns 4.93 ns 1.06
from array of 1 - create + subscribe + current_thread 1442.11 ns 25.67 ns 20.35 ns 1.26
concat_as_source of just(1 immediate) create + subscribe 4694.09 ns 160.29 ns 157.40 ns 1.02
defer from array of 1 - defer + create + subscribe + immediate 1214.93 ns 4.94 ns 4.93 ns 1.00
interval - interval + take(3) + subscribe + immediate 2983.15 ns 136.83 ns 130.45 ns 1.05
interval - interval + take(3) + subscribe + current_thread 3542.05 ns 59.86 ns 60.42 ns 0.99

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1856.68 ns 12.88 ns 12.89 ns 1.00
immediate_just+filter(true)+subscribe 1334.69 ns 12.33 ns 12.32 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 1812.62 ns 12.99 ns 13.20 ns 0.98
immediate_just(1,1,2)+distinct_until_changed()+subscribe 1621.47 ns 15.80 ns 15.92 ns 0.99
immediate_just(1,2)+first()+subscribe 2435.67 ns 12.64 ns 20.93 ns 0.60
immediate_just(1,2)+last()+subscribe 1501.05 ns 14.06 ns 22.26 ns 0.63
immediate_just+take_last(1)+subscribe 2028.82 ns 58.72 ns 58.93 ns 1.00

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 482.89 ns 4.32 ns 4.93 ns 0.88
current_thread scheduler create worker + schedule 662.67 ns 20.37 ns 16.95 ns 1.20
current_thread scheduler create worker + schedule + recursive schedule 1114.39 ns 104.61 ns 105.47 ns 0.99

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 1334.85 ns 12.26 ns 12.33 ns 0.99
immediate_just+scan(10, std::plus)+subscribe 1444.60 ns 21.58 ns 21.29 ns 1.01
immediate_just+flat_map(immediate_just(v*2))+subscribe 3532.41 ns 196.99 ns 197.32 ns 1.00
immediate_just+buffer(2)+subscribe 2647.29 ns 57.24 ns 62.49 ns 0.92
immediate_just+window(2)+subscribe + subscsribe inner 4090.87 ns 1132.49 ns 1096.32 ns 1.03

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 1616.69 ns 11.45 ns 11.46 ns 1.00
immediate_just+take_while(true)+subscribe 1357.75 ns 12.33 ns 12.32 ns 1.00

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 3153.45 ns 7.09 ns 7.71 ns 0.92

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 5291.71 ns 222.50 ns 240.46 ns 0.93
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 6461.24 ns 215.37 ns 210.65 ns 1.02
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 217.78 ns 217.97 ns 1.00
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 6213.02 ns 792.27 ns 749.06 ns 1.06

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 36.15 ns 37.64 ns 36.07 ns 1.04

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1874.87 ns 60.05 ns 59.80 ns 1.00
basic sample with immediate scheduler 1909.87 ns 37.03 ns 35.14 ns 1.05

Aggregating Operators

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

@codecov

codecov Bot commented Jan 13, 2024

Copy link
Copy Markdown

Codecov Report

All modified and coverable lines are covered by tests ✅

Comparison is base (d34891c) 95.57% compared to head (9afaee5) 95.56%.

Additional details and impacted files
@@            Coverage Diff             @@
##               v2     #505      +/-   ##
==========================================
- Coverage   95.57%   95.56%   -0.02%     
==========================================
  Files          77       77              
  Lines        1922     1917       -5     
==========================================
- Hits         1837     1832       -5     
  Misses         85       85              

☔ 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.

1 New issue
0 Security Hotspots
52.6% Coverage on New Code
0.0% Duplication on New Code

See analysis details on SonarCloud

@AlexInLog AlexInLog marked this pull request as ready for review January 13, 2024 21:32
@AlexInLog AlexInLog merged commit d797fd5 into v2 Jan 13, 2024
@AlexInLog AlexInLog deleted the reduce_get_observer_calls branch January 13, 2024 21:32
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