Skip to content

Timer source#513

Merged
AlexInLog merged 1 commit into
AlexInLog:v2from
CorentinBT:timer_source
Jan 27, 2024
Merged

Timer source#513
AlexInLog merged 1 commit into
AlexInLog:v2from
CorentinBT:timer_source

Conversation

@CorentinBT

Copy link
Copy Markdown
Contributor

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 323.14 ns 2.16 ns 2.16 ns 1.00
Subscribe empty callbacks to empty observable via pipe operator 317.93 ns 2.18 ns 2.16 ns 1.01

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 706.20 ns 0.31 ns 0.31 ns 1.00
from array of 1 - create + subscribe + current_thread 1034.47 ns 5.25 ns 5.25 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 2296.77 ns 112.46 ns 80.72 ns 1.39
defer from array of 1 - defer + create + subscribe + immediate 753.79 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 2109.61 ns 58.13 ns 58.05 ns 1.00
interval - interval + take(3) + subscribe + current_thread 3015.68 ns 32.12 ns 32.14 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1087.29 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 856.98 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 1018.93 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 856.50 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+first()+subscribe 1275.56 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+last()+subscribe 948.91 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 1159.66 ns 17.29 ns 18.20 ns 0.95

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 301.46 ns 2.16 ns 2.16 ns 1.00
current_thread scheduler create worker + schedule 406.94 ns 7.10 ns 7.10 ns 1.00
current_thread scheduler create worker + schedule + recursive schedule 843.14 ns 65.25 ns 63.90 ns 1.02

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 836.20 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 901.03 ns 0.31 ns 0.31 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 2357.64 ns 114.86 ns 114.82 ns 1.00
immediate_just+buffer(2)+subscribe 1517.81 ns 13.59 ns 14.51 ns 0.94
immediate_just+window(2)+subscribe + subscsribe inner 2359.75 ns 605.59 ns 639.40 ns 0.95

Conditional Operators

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

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 1982.82 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 3380.77 ns 132.15 ns 134.72 ns 0.98
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3704.30 ns 120.98 ns 121.67 ns 0.99
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 98.49 ns 99.66 ns 0.99
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 6300.83 ns 489.86 ns 469.06 ns 1.04

Subjects

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

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1351.21 ns 14.19 ns 14.20 ns 1.00
basic sample with immediate scheduler 1393.37 ns 5.56 ns 5.55 ns 1.00

Aggregating Operators

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

ci-macos

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 1526.40 ns 5.55 ns 4.46 ns 1.24
Subscribe empty callbacks to empty observable via pipe operator 2292.79 ns 13.05 ns 4.94 ns 2.64

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 3061.04 ns 0.77 ns 0.30 ns 2.58
from array of 1 - create + subscribe + current_thread 4991.80 ns 46.50 ns 33.64 ns 1.38
concat_as_source of just(1 immediate) create + subscribe 8790.98 ns 398.47 ns 312.39 ns 1.28
defer from array of 1 - defer + create + subscribe + immediate 2969.43 ns 0.35 ns 0.64 ns 0.55
interval - interval + take(3) + subscribe + immediate 7839.43 ns 167.80 ns 152.32 ns 1.10
interval - interval + take(3) + subscribe + current_thread 9879.37 ns 172.03 ns 175.19 ns 0.98

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 4313.80 ns 0.35 ns 0.61 ns 0.58
immediate_just+filter(true)+subscribe 3100.15 ns 0.37 ns 0.52 ns 0.72
immediate_just(1,2)+skip(1)+subscribe 4041.16 ns 0.34 ns 0.36 ns 0.95
immediate_just(1,1,2)+distinct_until_changed()+subscribe 3014.14 ns 0.67 ns 0.74 ns 0.91
immediate_just(1,2)+first()+subscribe 4670.16 ns 0.52 ns 0.63 ns 0.84
immediate_just(1,2)+last()+subscribe 3464.17 ns 0.34 ns 0.33 ns 1.02
immediate_just+take_last(1)+subscribe 4689.49 ns 108.03 ns 87.28 ns 1.24

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 1604.40 ns 10.15 ns 8.22 ns 1.24
current_thread scheduler create worker + schedule 2027.38 ns 70.32 ns 49.61 ns 1.42
current_thread scheduler create worker + schedule + recursive schedule 2903.63 ns 318.67 ns 396.75 ns 0.80

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 3192.03 ns 0.72 ns 0.31 ns 2.35
immediate_just+scan(10, std::plus)+subscribe 3663.95 ns 0.98 ns 0.86 ns 1.14
immediate_just+flat_map(immediate_just(v*2))+subscribe 7938.10 ns 485.58 ns 523.69 ns 0.93
immediate_just+buffer(2)+subscribe 4037.69 ns 166.30 ns 143.51 ns 1.16
immediate_just+window(2)+subscribe + subscsribe inner 11960.59 ns 3100.64 ns 3530.64 ns 0.88

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 4003.87 ns - - 0.00
immediate_just+take_while(true)+subscribe 4678.54 ns 0.75 ns 0.40 ns 1.88

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 7239.29 ns 0.34 ns 0.59 ns 0.57

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 13351.03 ns 803.46 ns 660.96 ns 1.22
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 17133.50 ns 810.79 ns 677.14 ns 1.20
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 827.62 ns 522.56 ns 1.58
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 16009.40 ns 2871.60 ns 1777.02 ns 1.62

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 107.86 ns 55.91 ns 57.37 ns 0.97

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 4035.77 ns 151.29 ns 417.71 ns 0.36
basic sample with immediate scheduler 4042.82 ns 20.66 ns 17.69 ns 1.17

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 3472.53 ns 0.34 ns 0.60 ns 0.56

ci-ubuntu-clang

General

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

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 580.74 ns 0.31 ns 0.31 ns 1.00
from array of 1 - create + subscribe + current_thread 805.27 ns 5.56 ns 5.55 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 1938.91 ns 71.66 ns 71.85 ns 1.00
defer from array of 1 - defer + create + subscribe + immediate 599.67 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 1507.85 ns 57.09 ns 57.17 ns 1.00
interval - interval + take(3) + subscribe + current_thread 2072.34 ns 30.95 ns 30.88 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 941.40 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 678.64 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 865.24 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 697.32 ns 0.31 ns 0.31 ns 0.99
immediate_just(1,2)+first()+subscribe 1096.51 ns 0.31 ns 0.31 ns 1.01
immediate_just(1,2)+last()+subscribe 773.39 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 969.84 ns 0.31 ns 0.31 ns 1.00

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 204.03 ns 0.88 ns 0.88 ns 1.00
current_thread scheduler create worker + schedule 311.98 ns 5.89 ns 5.90 ns 1.00
current_thread scheduler create worker + schedule + recursive schedule 627.59 ns 58.38 ns 58.00 ns 1.01

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 673.05 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 726.48 ns 0.31 ns 0.31 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 1826.10 ns 86.58 ns 83.85 ns 1.03
immediate_just+buffer(2)+subscribe 1389.04 ns 16.80 ns 14.20 ns 1.18
immediate_just+window(2)+subscribe + subscsribe inner 2173.96 ns 620.27 ns 626.79 ns 0.99

Conditional Operators

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

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 1617.15 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 2585.87 ns 92.10 ns 92.77 ns 0.99
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 2994.59 ns 130.86 ns 88.27 ns 1.48
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 87.93 ns 85.48 ns 1.03
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 2724.80 ns 549.03 ns 572.97 ns 0.96

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 26.28 ns 13.87 ns 13.56 ns 1.02

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1066.52 ns 13.88 ns 13.88 ns 1.00
basic sample with immediate scheduler 1043.46 ns 5.90 ns 5.86 ns 1.01

Aggregating Operators

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

ci-windows

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 571.85 ns 4.02 ns 4.01 ns 1.00
Subscribe empty callbacks to empty observable via pipe operator 588.61 ns 4.02 ns 4.01 ns 1.00

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 1221.45 ns 5.55 ns 5.55 ns 1.00
from array of 1 - create + subscribe + current_thread 1481.24 ns 20.73 ns 19.76 ns 1.05
concat_as_source of just(1 immediate) create + subscribe 4640.52 ns 163.59 ns 162.79 ns 1.00
defer from array of 1 - defer + create + subscribe + immediate 1235.94 ns 5.55 ns 5.55 ns 1.00
interval - interval + take(3) + subscribe + immediate 3127.16 ns 129.44 ns 129.41 ns 1.00
interval - interval + take(3) + subscribe + current_thread 3492.98 ns 60.79 ns 60.75 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1884.38 ns 12.87 ns 13.75 ns 0.94
immediate_just+filter(true)+subscribe 1381.74 ns 12.37 ns 12.35 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 1787.19 ns 13.21 ns 13.25 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 1457.31 ns 15.95 ns 15.96 ns 1.00
immediate_just(1,2)+first()+subscribe 2477.19 ns 12.97 ns 12.94 ns 1.00
immediate_just(1,2)+last()+subscribe 1512.81 ns 14.19 ns 14.04 ns 1.01
immediate_just+take_last(1)+subscribe 2094.93 ns 58.50 ns 59.81 ns 0.98

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 494.86 ns 7.41 ns 7.40 ns 1.00
current_thread scheduler create worker + schedule 665.37 ns 17.10 ns 18.20 ns 0.94
current_thread scheduler create worker + schedule + recursive schedule 1117.71 ns 108.23 ns 109.35 ns 0.99

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 1361.16 ns 12.33 ns 12.33 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 1469.97 ns 21.29 ns 21.27 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 3620.07 ns 192.21 ns 197.35 ns 0.97
immediate_just+buffer(2)+subscribe 2686.04 ns 57.13 ns 57.88 ns 0.99
immediate_just+window(2)+subscribe + subscsribe inner 4152.03 ns 1048.57 ns 1062.65 ns 0.99

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 1630.01 ns 11.48 ns 11.48 ns 1.00
immediate_just+take_while(true)+subscribe 1356.91 ns 12.37 ns 12.37 ns 1.00

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 3527.52 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 5483.08 ns 219.98 ns 223.01 ns 0.99
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 5890.11 ns 214.03 ns 221.10 ns 0.97
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 213.44 ns 214.22 ns 1.00
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 6260.11 ns 723.40 ns 729.59 ns 0.99

Subjects

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

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1899.09 ns 60.75 ns 59.91 ns 1.01
basic sample with immediate scheduler 1914.37 ns 37.67 ns 37.64 ns 1.00

Aggregating Operators

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

@sonarqubecloud

Copy link
Copy Markdown

@codecov

codecov Bot commented Jan 27, 2024

Copy link
Copy Markdown

Codecov Report

All modified and coverable lines are covered by tests ✅

Comparison is base (c3eb691) 95.90% compared to head (12ef029) 95.91%.

Additional details and impacted files
@@           Coverage Diff           @@
##               v2     #513   +/-   ##
=======================================
  Coverage   95.90%   95.91%           
=======================================
  Files          79       80    +1     
  Lines        2053     2055    +2     
=======================================
+ Hits         1969     1971    +2     
  Misses         84       84           

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

@AlexInLog

Copy link
Copy Markdown
Owner

Thank you, @CorentinBT =)

@AlexInLog AlexInLog merged commit 0415e1f into AlexInLog:v2 Jan 27, 2024
* @see https://reactivex.io/documentation/operators/timer.html
*/
template<schedulers::constraint::scheduler TScheduler>
auto timer(rpp::schedulers::duration when, TScheduler&& scheduler)

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

BTW: @CorentinBT, isn't timer difference from interval that it accepts timepoint instead of duration??

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.

2 participants