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

Add "take_until" operator. #235

Merged
merged 12 commits into from
Sep 8, 2022
Merged

Conversation

tcw165
Copy link
Contributor

@tcw165 tcw165 commented Aug 27, 2022

No description provided.

@codecov
Copy link

codecov bot commented Aug 29, 2022

Codecov Report

Merging #235 (359f4c2) into main (a3f59ab) will increase coverage by 0.11%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main     #235      +/-   ##
==========================================
+ Coverage   98.20%   98.32%   +0.11%     
==========================================
  Files          93       95       +2     
  Lines        1340     1376      +36     
==========================================
+ Hits         1316     1353      +37     
+ Misses         24       23       -1     
Impacted Files Coverage Δ
src/rpp/rpp/observables/interface_observable.hpp 100.00% <ø> (ø)
src/rpp/rpp/operators/combine_latest.hpp 100.00% <100.00%> (ø)
src/rpp/rpp/operators/concat.hpp 100.00% <100.00%> (ø)
...rc/rpp/rpp/operators/details/early_unsubscribe.hpp 100.00% <100.00%> (ø)
src/rpp/rpp/operators/fwd/take_until.hpp 100.00% <100.00%> (ø)
src/rpp/rpp/operators/merge.hpp 100.00% <100.00%> (ø)
src/rpp/rpp/operators/switch_on_next.hpp 100.00% <100.00%> (ø)
src/rpp/rpp/operators/take_until.hpp 100.00% <100.00%> (ø)
src/rpp/rpp/operators/with_latest_from.hpp 100.00% <100.00%> (ø)
src/rpp/rpp/schedulers/trampoline_scheduler.hpp 95.65% <0.00%> (+2.17%) ⬆️

📣 We’re building smart automated test selection to slash your CI/CD build times. Learn more

@tcw165 tcw165 force-pushed the op/take_until branch 2 times, most recently from b7342b5 to 3369405 Compare September 1, 2022 15:06
@github-actions
Copy link
Contributor

github-actions bot commented Sep 1, 2022

BENCHMARK RESULTS (AUTOGENERATED)

ci-ubuntu-clang

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 0.40ns 0.402086 1.00 0.47ns
Dynamic observable construction 35.06ns 39.7993 0.88 29.09ns
Specific observable construction + as_dynamic 35.04ns 34.9898 1.00 29.43ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 134.15ns 134.617 1.00 350.79ns
Specific observable lift dynamic observer 161.64ns 160.836 1.00 379.12ns
Dynamic observable lift specific observer 219.34ns 221.362 0.99 424.39ns
Dynamic observable lift dynamic observer 229.67ns 228.869 1.00 392.06ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 92.94ns 92.8019 1.00 346.56ns
Specific observable subscribe dynamic observer 109.15ns 108.819 1.00 356.79ns
Dynamic observable subscribe specific observer 174.81ns 177.879 0.98 396.76ns
Dynamic observable subscribe dynamic observer 167.67ns 168.012 1.00 378.17ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 91.80ns 90.8162 1.01 345.87ns
Dynamic observable subscribe lambda 171.26ns 170.76 1.00 395.01ns
Specific observable subscribe lambda without subscription 91.66ns 90.8542 1.01 381.31ns
Dynamic observable subscribe lambda without subscription 168.02ns 166.802 1.01 428.48ns
Specific observable subscribe specific subscriber 51.83ns 51.8329 1.00 273.49ns
Dynamic observable subscribe specific subscriber 129.73ns 129.034 1.01 322.33ns
Specific observable subscribe dynamic observer 52.23ns 52.2559 1.00 286.38ns
Dynamic observable subscribe dynamic observer 112.77ns 112.844 1.00 316.37ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.40ns 0.402048 1.00 0.40ns
Dynamic observer construction 35.04ns 34.9722 1.00 24.62ns
Specific observer construction + as_dynamic 35.03ns 35.0877 1.00 24.91ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.81ns 0.804439 1.00 0.81ns
Dynamic observer OnNext 2.43ns 2.01053 1.21 3.02ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 41.99ns 38.9864 1.08 77.34ns
Make copy of subscriber 20.09ns 20.0896 1.00 5.67ns
Transform subsriber to dynamic 52.21ns 52.3317 1.00 31.81ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 41.76ns 39.0454 1.07 62.08ns
composite_subscription add 61.38ns 59.1726 1.04 109.70ns
composite_subscription unsubscribe 53.37ns 52.9548 1.01 28.10ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 319.54ns 320.144 1.00 2282.45ns
sending of values from observable via buffer to subscriber 7.67ns 7.64791 1.00 32.80ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 321.21ns 336.269 0.96 598.33ns
long stateful chain creation + subscribe 478.15ns 478.008 1.00 958.42ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 952.61ns 926.359 1.03 1065.81ns
sending of values from observable via combine_latest to subscriber 21.71ns 21.7022 1.00 2.82ns

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 2080.22ns 2073.26 1.00 3663.17ns
concat_with 2375.50ns 2358.79 1.01 4006.57ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 154.26ns 152.968 1.01 307.68ns
sending of values from observable via distinct_until_changed to subscriber 2.82ns 2.81526 1.00 1.61ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 175.01ns 169.164 1.03 694.61ns
sending of values from observable via first to subscriber 0.81ns 0.810199 1.00 0.81ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 103.01ns 100.731 1.02 746.18ns
error 161.01ns 161.487 1.00 883.06ns
never 56.28ns 56.4356 1.00 302.26ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 118.55ns 118.798 1.00 790.23ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 0.81ns 1.61587 0.50 138.67ns
re-schedule 10 times 11.28ns 13.7225 0.82 179.28ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 102.90ns 102.681 1.00 752.38ns
just send variadic 141.79ns 140.229 1.01 889.16ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 106.92ns 106.849 1.00 295.47ns
sending of values from observable via map to subscriber 1.21ns 1.20554 1.00 2.81ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 2014.53ns 1998.77 1.01 3610.89ns
merge_with 2280.55ns 2306.35 0.99 3824.26ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 696.15ns 700.363 0.99 3084.83ns
sending of values from observable via observe_on to subscriber 110.05ns 109.598 1.00 242.00ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 28.93ns 28.9164 1.00 11.88ns
on_error 0.61ns 0.808666 0.75 23.02ns
on_completed 0.61ns 0.808634 0.75 0.81ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 236.37ns 235.277 1.00 214.37ns
get_observable 34.98ns 31.7227 1.10 59.59ns
get_subscriber 72.73ns 69.8764 1.04 15.64ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 4744.50ns 4723.82 1.00 3162.22ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 157.67ns 150.316 1.05 358.23ns
sending of values from observable via scan to subscriber 2.43ns 2.41141 1.01 2.81ns

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 144.65ns 147.367 0.98 558.81ns
sending of values from observable via skip to subscriber 2.04ns 2.41327 0.84 2.13ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 2498.60ns 2501.04 1.00 3314.22ns
sending of values from observable via switch_on_next to subscriber 657.51ns 641.725 1.02 763.91ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 221.20ns 221.855 1.00 593.07ns
sending of values from observable via take to subscriber 2.82ns 2.81685 1.00 3.19ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 278.22ns 273.358 1.02 632.97ns
sending of values from observable via take_last to subscriber 3.49ns 3.52448 0.99 4.23ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 1162.56ns None . 1395.01ns
sending of values from observable via take_until to subscriber 21.68ns None . 2.14ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 14.09ns 16.8997 0.83 196.73ns
re-schedule 10 times 36.65ns 40.758 0.90 236.75ns
recursively schedule 10 times 1656.31ns 1634.39 1.01 6709.77ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 2431.26ns 2422.84 1.00 3593.70ns
sending of values from observable via window to subscriber 657.64ns 653.195 1.01 444.21ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 1141.33ns 1135.3 1.01 1280.70ns
sending of values from observable via with_latest_from to subscriber 41.80ns 41.3714 1.01 3.62ns

ci-ubuntu-gcc

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 0.30ns 0.404625 0.74 0.34ns
Dynamic observable construction 27.85ns 40.7054 0.68 21.95ns
Specific observable construction + as_dynamic 27.92ns 33.1997 0.84 22.50ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 119.38ns 164.464 0.73 335.36ns
Specific observable lift dynamic observer 145.25ns 187.735 0.77 341.88ns
Dynamic observable lift specific observer 199.54ns 300.476 0.66 383.80ns
Dynamic observable lift dynamic observer 208.01ns 274.803 0.76 363.29ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 83.57ns 119.429 0.70 321.35ns
Specific observable subscribe dynamic observer 95.48ns 152.377 0.63 329.96ns
Dynamic observable subscribe specific observer 148.00ns 191.05 0.77 362.62ns
Dynamic observable subscribe dynamic observer 146.27ns 186.752 0.78 338.81ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 73.63ns 115.355 0.64 317.23ns
Dynamic observable subscribe lambda 131.09ns 179.461 0.73 362.46ns
Specific observable subscribe lambda without subscription 83.58ns 100.803 0.83 330.83ns
Dynamic observable subscribe lambda without subscription 148.80ns 187.296 0.79 364.69ns
Specific observable subscribe specific subscriber 50.68ns 67.032 0.76 264.15ns
Dynamic observable subscribe specific subscriber 116.86ns 148.162 0.79 305.93ns
Specific observable subscribe dynamic observer 50.85ns 78.3783 0.65 275.69ns
Dynamic observable subscribe dynamic observer 102.78ns 143.247 0.72 281.18ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.33ns 0.388082 0.86 0.34ns
Dynamic observer construction 31.52ns 44.2798 0.71 21.29ns
Specific observer construction + as_dynamic 31.55ns 45.9099 0.69 20.33ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.34ns 0.453237 0.74 0.34ns
Dynamic observer OnNext 1.68ns 2.97091 0.56 2.01ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 34.52ns 43.7785 0.79 63.67ns
Make copy of subscriber 16.74ns 22.9042 0.73 4.50ns
Transform subsriber to dynamic 44.42ns 65.2845 0.68 24.74ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 34.51ns 48.789 0.71 57.72ns
composite_subscription add 46.82ns 64.8425 0.72 91.32ns
composite_subscription unsubscribe 36.64ns 50.5883 0.72 21.53ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 223.42ns 330.515 0.68 1711.47ns
sending of values from observable via buffer to subscriber 5.96ns 10.4073 0.57 27.61ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 268.12ns 424.13 0.63 622.72ns
long stateful chain creation + subscribe 385.55ns 555.359 0.69 923.73ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 716.19ns 1203.72 0.59 1148.29ns
sending of values from observable via combine_latest to subscriber 16.25ns 26.0825 0.62 1.49ns

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 1567.02ns 2137.79 0.73 3189.44ns
concat_with 1800.82ns 2948.97 0.61 3530.83ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 121.20ns 180.28 0.67 364.68ns
sending of values from observable via distinct_until_changed to subscriber 3.55ns 6.24738 0.57 1.34ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 139.46ns 201.283 0.69 626.84ns
sending of values from observable via first to subscriber 0.59ns 0.687664 0.86 0.89ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 77.68ns 109.436 0.71 742.89ns
error 116.43ns 180.343 0.65 833.09ns
never 43.99ns 81.1405 0.54 277.36ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 94.82ns 170.255 0.56 685.94ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 1.51ns 1.15414 1.31 112.81ns
re-schedule 10 times 20.12ns 21.7359 0.93 148.30ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 79.47ns 133.643 0.59 687.75ns
just send variadic 116.13ns 174.482 0.67 746.76ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 91.64ns 129.895 0.71 361.22ns
sending of values from observable via map to subscriber 0.83ns 1.318 0.63 2.68ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 1487.13ns 2080.24 0.71 3425.83ns
merge_with 1749.02ns 2776.68 0.63 3590.50ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 534.92ns 826.67 0.65 2825.77ns
sending of values from observable via observe_on to subscriber 75.60ns 98.2663 0.77 240.35ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 20.09ns 30.643 0.66 8.81ns
on_error 0.60ns 0.878967 0.68 14.86ns
on_completed 0.59ns 0.805419 0.74 0.59ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 187.85ns 238.837 0.79 151.49ns
get_observable 25.98ns 31.8906 0.81 44.85ns
get_subscriber 50.58ns 76.1409 0.66 20.91ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 3628.30ns 8099.7 0.45 3238.24ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 125.32ns 195.457 0.64 385.71ns
sending of values from observable via scan to subscriber 3.25ns 5.42343 0.60 1.60ns

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 118.59ns 163.04 0.73 485.85ns
sending of values from observable via skip to subscriber 2.37ns 3.63296 0.65 2.07ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 1918.31ns 3215.54 0.60 4389.49ns
sending of values from observable via switch_on_next to subscriber 487.61ns 684.543 0.71 1082.94ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 170.01ns 233.904 0.73 521.36ns
sending of values from observable via take to subscriber 4.40ns 5.06938 0.87 3.65ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 205.00ns 300.647 0.68 555.62ns
sending of values from observable via take_last to subscriber 2.97ns 5.96085 0.50 5.31ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 866.66ns None . 1448.93ns
sending of values from observable via take_until to subscriber 15.66ns None . 1.58ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 18.59ns 25.0472 0.74 158.24ns
re-schedule 10 times 43.09ns 56.2003 0.77 195.19ns
recursively schedule 10 times 1241.43ns 1785.64 0.70 5697.57ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 1901.56ns 2737.21 0.69 2877.22ns
sending of values from observable via window to subscriber 520.10ns 738.709 0.70 368.18ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 890.32ns 1779.82 0.50 1399.02ns
sending of values from observable via with_latest_from to subscriber 31.01ns 49.2503 0.63 5.03ns

ci-windows

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 1.51ns 1.6805 0.90 0.73ns
Dynamic observable construction 82.07ns 76.0608 1.08 124.55ns
Specific observable construction + as_dynamic 81.58ns 68.3091 1.19 124.32ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 173.23ns 178.839 0.97 1212.41ns
Specific observable lift dynamic observer 202.77ns 173.672 1.17 1280.00ns
Dynamic observable lift specific observer 301.73ns 257.575 1.17 1404.95ns
Dynamic observable lift dynamic observer 260.94ns 223.707 1.17 1295.05ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 138.03ns 126.787 1.09 1181.36ns
Specific observable subscribe dynamic observer 152.11ns 130.468 1.17 1206.82ns
Dynamic observable subscribe specific observer 256.70ns 251.68 1.02 1343.05ns
Dynamic observable subscribe dynamic observer 201.30ns 172.466 1.17 1229.76ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 138.91ns 135.663 1.02 1173.45ns
Dynamic observable subscribe lambda 257.67ns 228.796 1.13 1354.68ns
Specific observable subscribe lambda without subscription 138.83ns 132.709 1.05 1181.95ns
Dynamic observable subscribe lambda without subscription 258.25ns 219.968 1.17 1451.16ns
Specific observable subscribe specific subscriber 49.18ns 46.5921 1.06 848.70ns
Dynamic observable subscribe specific subscriber 177.22ns 140.679 1.26 1045.44ns
Specific observable subscribe dynamic observer 55.28ns 50.3206 1.10 883.69ns
Dynamic observable subscribe dynamic observer 101.36ns 87.5541 1.16 914.32ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 1.50ns 1.49865 1.00 1.50ns
Dynamic observer construction 83.76ns 78.2351 1.07 112.22ns
Specific observer construction + as_dynamic 83.74ns 70.2025 1.19 112.80ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.67ns 0.587168 1.14 0.67ns
Dynamic observer OnNext 1.69ns 1.72021 0.98 2.16ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 85.14ns 83.1692 1.02 354.71ns
Make copy of subscriber 16.71ns 14.8032 1.13 31.54ns
Transform subsriber to dynamic 97.30ns 90.2218 1.08 149.40ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 84.57ns 80.3887 1.05 344.57ns
composite_subscription add 69.95ns 65.5216 1.07 149.77ns
composite_subscription unsubscribe 62.55ns 59.4396 1.05 121.98ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 380.56ns 350.367 1.09 4500.00ns
sending of values from observable via buffer to subscriber 6.72ns 6.1541 1.09 91.60ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 286.58ns 259.886 1.10 1732.79ns
long stateful chain creation + subscribe 682.69ns 1208.71 0.56 3192.25ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 1521.19ns 1378.27 1.10 2992.38ns
sending of values from observable via combine_latest to subscriber 36.30ns 33.6393 1.08 4.10ns

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 2627.10ns 2970.6 0.88 12108.00ns
concat_with 3237.12ns 2885.88 1.12 13205.70ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 202.04ns 186.392 1.08 1024.20ns
sending of values from observable via distinct_until_changed to subscriber 3.68ns 3.28318 1.12 3.80ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 146.22ns 130.732 1.12 2626.00ns
sending of values from observable via first to subscriber 2.68ns 2.2642 1.18 1.57ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 88.12ns 72.8433 1.21 2406.64ns
error 139.75ns 120.844 1.16 2489.55ns
never 51.29ns 44.6304 1.15 884.96ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 157.26ns 138.69 1.13 2470.18ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 1.34ns 1.50635 0.89 409.37ns
re-schedule 10 times 97.81ns 83.8101 1.17 441.60ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 88.63ns 76.7238 1.16 2439.36ns
just send variadic 128.83ns 125.187 1.03 2509.20ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 104.48ns 92.6964 1.13 989.65ns
sending of values from observable via map to subscriber 3.78ns 2.82904 1.33 7.39ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 2499.40ns 2689.27 0.93 20337.00ns
merge_with 3130.78ns 2815.33 1.11 21050.30ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 824.13ns 700.774 1.18 5625.00ns
sending of values from observable via observe_on to subscriber 86.06ns 69.1516 1.24 841.79ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 19.72ns 16.9215 1.17 32.46ns
on_error 3.37ns 2.89456 1.17 18.50ns
on_completed 2.70ns 2.482 1.09 0.68ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 357.40ns 311.333 1.15 722.44ns
get_observable 28.41ns 25.6116 1.11 163.99ns
get_subscriber 50.35ns 43.0077 1.17 94.06ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 6083.80ns 5802.0 1.05 14195.30ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 207.60ns 175.839 1.18 1252.10ns
sending of values from observable via scan to subscriber 5.36ns 5.08887 1.05 8.92ns

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 192.02ns 179.824 1.07 1827.81ns
sending of values from observable via skip to subscriber 4.48ns 3.15552 1.42 3.87ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 3679.38ns 3355.29 1.10 12039.50ns
sending of values from observable via switch_on_next to subscriber 844.38ns 760.156 1.11 3079.33ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 248.42ns 213.414 1.16 2164.33ns
sending of values from observable via take to subscriber 6.02ns 5.98848 1.00 5.60ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 348.81ns 296.544 1.18 2448.27ns
sending of values from observable via take_last to subscriber 4.26ns 3.74848 1.14 20.30ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 1525.18ns None . 6160.20ns
sending of values from observable via take_until to subscriber 29.55ns None . 5.25ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 19.59ns 17.3039 1.13 614.10ns
re-schedule 10 times 121.93ns 218.943 0.56 645.62ns
recursively schedule 10 times 2669.40ns 2509.5 1.06 19107.00ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 2952.33ns 2996.78 0.99 9653.67ns
sending of values from observable via window to subscriber 834.61ns 768.742 1.09 1623.88ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 1902.00ns 1736.92 1.10 3736.67ns
sending of values from observable via with_latest_from to subscriber 54.87ns 47.841 1.15 6.73ns

@tcw165 tcw165 marked this pull request as ready for review September 2, 2022 06:33
src/examples/doxygen/take_until.cpp Outdated Show resolved Hide resolved
src/rpp/rpp/operators/fwd/take_until.hpp Outdated Show resolved Hide resolved
src/rpp/rpp/operators/fwd/take_until.hpp Outdated Show resolved Hide resolved
src/rpp/rpp/operators/fwd/take_until.hpp Outdated Show resolved Hide resolved
src/rpp/rpp/operators/fwd/take_until.hpp Outdated Show resolved Hide resolved
src/rpp/rpp/operators/take_until.hpp Outdated Show resolved Hide resolved
src/rpp/rpp/operators/take_until.hpp Outdated Show resolved Hide resolved
src/rpp/rpp/operators/take_until.hpp Outdated Show resolved Hide resolved
src/tests/test_take_until.cpp Outdated Show resolved Hide resolved
src/tests/test_take_until.cpp Outdated Show resolved Hide resolved
Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

⚠️ clang-tidy found issue(s) with the introduced code (1/1)

src/examples/doxygen/take_until.cpp Show resolved Hide resolved
@tcw165
Copy link
Contributor Author

tcw165 commented Sep 4, 2022

Rebased

@tcw165 tcw165 force-pushed the op/take_until branch 3 times, most recently from 3b44431 to 1eca4d6 Compare September 4, 2022 17:20
Copy link
Owner

@victimsnino victimsnino left a comment

Choose a reason for hiding this comment

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

Overall looks much better

src/rpp/rpp/operators/fwd/take_until.hpp Outdated Show resolved Hide resolved
src/rpp/rpp/operators/take_until.hpp Outdated Show resolved Hide resolved
src/rpp/rpp/operators/take_until.hpp Outdated Show resolved Hide resolved
src/rpp/rpp/operators/take_until.hpp Outdated Show resolved Hide resolved
src/rpp/rpp/operators/take_until.hpp Outdated Show resolved Hide resolved
src/tests/test_take_until.cpp Outdated Show resolved Hide resolved
src/rpp/rpp/operators/take_until.hpp Outdated Show resolved Hide resolved
src/rpp/rpp/operators/take_until.hpp Outdated Show resolved Hide resolved
src/tests/test_take_until.cpp Show resolved Hide resolved
src/tests/test_take_until.cpp Outdated Show resolved Hide resolved
@tcw165 tcw165 force-pushed the op/take_until branch 2 times, most recently from b313e53 to 443536e Compare September 6, 2022 18:19
@tcw165 tcw165 force-pushed the op/take_until branch 3 times, most recently from a2ea55a to 80f4507 Compare September 6, 2022 20:04
victimsnino
victimsnino previously approved these changes Sep 6, 2022
@tcw165 tcw165 force-pushed the op/take_until branch 5 times, most recently from 9c8b4c4 to d6be308 Compare September 8, 2022 00:37
@tcw165
Copy link
Contributor Author

tcw165 commented Sep 8, 2022

@victimsnino The "early-unsubscribing" fixes the race condition among on_next, on_error and on_completed dispatching.

image

@sonarcloud
Copy link

sonarcloud bot commented Sep 8, 2022

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 0 Code Smells

0.0% 0.0% Coverage
0.0% 0.0% Duplication

@victimsnino victimsnino merged commit 876f4a1 into victimsnino:main Sep 8, 2022
@tcw165 tcw165 deleted the op/take_until branch September 9, 2022 16:03
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