Skip to content

Fix issue with execution after unsubscribe#293

Merged
AlexInLog merged 1 commit into
mainfrom
fix_schedulable_issue
Nov 20, 2022
Merged

Fix issue with execution after unsubscribe#293
AlexInLog merged 1 commit into
mainfrom
fix_schedulable_issue

Conversation

@AlexInLog

Copy link
Copy Markdown
Owner

No description provided.

@codecov

codecov Bot commented Nov 20, 2022

Copy link
Copy Markdown

Codecov Report

Merging #293 (e626509) into main (fc3b44b) will decrease coverage by 0.12%.
The diff coverage is 83.33%.

@@            Coverage Diff             @@
##             main     #293      +/-   ##
==========================================
- Coverage   98.61%   98.48%   -0.13%     
==========================================
  Files         108      108              
  Lines        1513     1523      +10     
==========================================
+ Hits         1492     1500       +8     
- Misses         21       23       +2     
Impacted Files Coverage Δ
src/rpp/rpp/schedulers/details/worker.hpp 94.73% <66.66%> (-5.27%) ⬇️
src/rpp/rpp/schedulers/new_thread_scheduler.hpp 96.00% <80.00%> (-1.78%) ⬇️
src/rpp/rpp/schedulers/run_loop_scheduler.hpp 100.00% <100.00%> (ø)
src/rpp/rpp/schedulers/trampoline_scheduler.hpp 98.11% <100.00%> (+0.07%) ⬆️

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

@github-actions

Copy link
Copy Markdown
Contributor

BENCHMARK RESULTS (AUTOGENERATED)

ci-ubuntu-clang

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 0.33ns 0.335048 1.00 0.33ns
Dynamic observable construction 29.10ns 29.1444 1.00 24.29ns
Specific observable construction + as_dynamic 29.24ns 29.1059 1.00 24.13ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 88.90ns 88.9114 1.00 289.83ns
Specific observable lift dynamic observer 110.87ns 111.572 0.99 307.05ns
Dynamic observable lift specific observer 169.99ns 170.776 1.00 336.71ns
Dynamic observable lift dynamic observer 175.26ns 177.609 0.99 322.80ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 57.97ns 57.9403 1.00 287.58ns
Specific observable subscribe dynamic observer 71.66ns 71.5598 1.00 295.47ns
Dynamic observable subscribe specific observer 124.63ns 125.031 1.00 329.46ns
Dynamic observable subscribe dynamic observer 121.59ns 123.881 0.98 314.89ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 58.07ns 58.0255 1.00 287.71ns
Dynamic observable subscribe lambda 124.08ns 124.054 1.00 325.28ns
Specific observable subscribe lambda without subscription 58.05ns 58.0292 1.00 288.71ns
Dynamic observable subscribe lambda without subscription 124.24ns 124.201 1.00 327.84ns
Specific observable subscribe specific subscriber 27.88ns 27.8032 1.00 224.47ns
Dynamic observable subscribe specific subscriber 88.68ns 88.6379 1.00 270.51ns
Specific observable subscribe dynamic observer 27.83ns 27.7769 1.00 238.00ns
Dynamic observable subscribe dynamic observer 75.32ns 77.328 0.97 259.33ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.34ns 0.334844 1.00 0.34ns
Dynamic observer construction 29.21ns 29.133 1.00 21.65ns
Specific observer construction + as_dynamic 29.20ns 29.1611 1.00 21.36ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.67ns 0.669923 1.00 0.67ns
Dynamic observer OnNext 2.01ns 2.01084 1.00 2.35ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 34.85ns 34.9146 1.00 64.66ns
Make copy of subscriber 16.77ns 16.742 1.00 4.69ns
Transform subsriber to dynamic 43.47ns 43.5518 1.00 25.97ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 34.83ns 34.8133 1.00 53.13ns
composite_subscription add 49.23ns 47.4828 1.04 93.56ns
composite_subscription unsubscribe 43.44ns 43.4577 1.00 23.44ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 243.51ns 246.506 0.99 1862.34ns
sending of values from observable via buffer to subscriber 5.36ns 5.3531 1.00 27.91ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 255.08ns 254.713 1.00 497.70ns
long stateful chain creation + subscribe 373.48ns 376.337 0.99 1304.34ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 867.08ns 866.083 1.00 875.73ns
sending of values from observable via combine_latest to subscriber 27.45ns 27.4375 1.00 1.75ns

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 1859.96ns 1867.4 1.00 3281.74ns
concat_with 2162.31ns 2162.12 1.00 3727.94ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 111.03ns 110.714 1.00 248.90ns
sending of values from observable via distinct_until_changed to subscriber 2.68ns 2.68163 1.00 2.35ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 123.70ns 124.274 1.00 576.18ns
sending of values from observable via first to subscriber 0.67ns 0.67089 1.00 0.67ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 61.86ns 61.8223 1.00 619.11ns
error 112.24ns 112.157 1.00 744.01ns
never 28.64ns 28.7012 1.00 249.58ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 77.90ns 79.7985 0.98 654.03ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 1.34ns 1.34103 1.00 113.09ns
re-schedule 10 times 11.44ns 11.4653 1.00 146.71ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 62.82ns 65.0726 0.97 627.47ns
just send variadic 94.72ns 94.8347 1.00 736.15ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 165.54ns 168.999 0.98 351.24ns
sending of values from observable via last to subscriber 2.10ns 2.12903 0.99 1.68ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 68.59ns 68.6536 1.00 241.87ns
sending of values from observable via map to subscriber 1.34ns 1.33968 1.00 1.51ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 1812.08ns 1818.16 1.00 3393.54ns
merge_with 2105.60ns 2106.38 1.00 3526.60ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 426.41ns 426.379 1.00 2582.12ns
sending of values from observable via observe_on to subscriber 61.45ns 61.3564 1.00 199.94ns

on_error_resume_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_error_resume_next construction from observable via dot + subscribe 417.74ns 421.93 0.99 890.30ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 24.06ns 24.1378 1.00 10.72ns
on_error 0.67ns 0.672872 1.00 19.20ns
on_completed 0.67ns 0.673547 1.00 0.67ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 190.31ns 195.625 0.97 189.29ns
get_observable 26.40ns 26.43 1.00 50.56ns
get_subscriber 60.56ns 60.4985 1.00 13.15ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 3913.04ns 3883.35 1.01 3014.04ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 100.48ns 100.386 1.00 294.13ns
sending of values from observable via scan to subscriber 2.01ns 2.00717 1.00 2.02ns

single-threaded locks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no-lock increment 2.02ns 2.02019 1.00 .
mutex lock increment 18.09ns 18.0536 1.00 .
spin-lock increment 9.04ns 15.7092 0.58 .

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 98.72ns 98.8826 1.00 465.32ns
sending of values from observable via skip to subscriber 2.36ns 2.34374 1.00 1.78ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 2204.31ns 2194.77 1.00 2840.92ns
sending of values from observable via switch_on_next to subscriber 571.78ns 568.996 1.00 642.50ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 169.43ns 169.672 1.00 493.60ns
sending of values from observable via take to subscriber 2.35ns 2.34731 1.00 3.36ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 208.82ns 210.326 0.99 527.38ns
sending of values from observable via take_last to subscriber 2.69ns 2.69318 1.00 3.76ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 1032.78ns 1029.9 1.00 1165.01ns
sending of values from observable via take_until to subscriber 9.04ns 9.03606 1.00 1.84ns

timeout

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
timeout construction from observable via dot + subscribe with run_loop 870.63ns 868.027 1.00 14357.20ns
sending of values from observable via timeout to subscriber with unreachable timeout interval with run_loop 55.90ns 55.8089 1.00 14282.90ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 11.42ns 12.0126 0.95 161.34ns
re-schedule 10 times 32.51ns 32.5272 1.00 190.27ns
recursively schedule 10 times 1394.20ns 1450.72 0.96 8307.30ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 2002.22ns 1991.93 1.01 3085.04ns
sending of values from observable via window to subscriber 546.48ns 541.102 1.01 366.04ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 1025.70ns 1016.06 1.01 1109.16ns
sending of values from observable via with_latest_from to subscriber 27.08ns 27.0523 1.00 3.01ns

ci-ubuntu-gcc

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 0.39ns 0.402061 0.98 0.40ns
Dynamic observable construction 36.06ns 37.9303 0.95 28.03ns
Specific observable construction + as_dynamic 34.25ns 37.0661 0.92 29.79ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 105.76ns 117.578 0.90 411.50ns
Specific observable lift dynamic observer 143.34ns 152.217 0.94 701.29ns
Dynamic observable lift specific observer 214.58ns 218.016 0.98 501.27ns
Dynamic observable lift dynamic observer 396.51ns 231.237 1.71 474.17ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 66.96ns 72.5318 0.92 455.01ns
Specific observable subscribe dynamic observer 86.88ns 93.0589 0.93 406.32ns
Dynamic observable subscribe specific observer 162.15ns 156.993 1.03 510.32ns
Dynamic observable subscribe dynamic observer 164.25ns 152.545 1.08 431.16ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 77.48ns 72.1494 1.07 394.51ns
Dynamic observable subscribe lambda 151.98ns 148.613 1.02 482.39ns
Specific observable subscribe lambda without subscription 63.53ns 73.0114 0.87 365.01ns
Dynamic observable subscribe lambda without subscription 146.72ns 156.697 0.94 458.08ns
Specific observable subscribe specific subscriber 34.20ns 36.8529 0.93 334.30ns
Dynamic observable subscribe specific subscriber 98.01ns 116.294 0.84 362.78ns
Specific observable subscribe dynamic observer 31.18ns 36.5423 0.85 354.01ns
Dynamic observable subscribe dynamic observer 98.99ns 98.4839 1.01 397.23ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.37ns 0.384403 0.97 1.30ns
Dynamic observer construction 35.24ns 37.956 0.93 23.53ns
Specific observer construction + as_dynamic 36.31ns 37.7516 0.96 24.75ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.43ns 0.401868 1.07 0.38ns
Dynamic observer OnNext 2.36ns 2.4148 0.98 2.26ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 36.98ns 41.3798 0.89 76.62ns
Make copy of subscriber 20.40ns 20.2309 1.01 5.69ns
Transform subsriber to dynamic 53.58ns 53.1788 1.01 26.89ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 45.44ns 42.4251 1.07 63.47ns
composite_subscription add 61.61ns 58.6971 1.05 71.33ns
composite_subscription unsubscribe 50.85ns 50.4563 1.01 30.00ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 470.34ns 280.869 1.67 2336.87ns
sending of values from observable via buffer to subscriber 10.49ns 7.25612 1.45 34.22ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 345.95ns 344.712 1.00 852.18ns
long stateful chain creation + subscribe 538.22ns 511.241 1.05 1935.05ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 1061.56ns 1110.19 0.96 1480.52ns
sending of values from observable via combine_latest to subscriber 35.46ns 33.9516 1.04 1.86ns

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 2151.50ns 2334.47 0.92 5118.50ns
concat_with 3457.42ns 2616.61 1.32 4818.75ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 229.48ns 144.725 1.59 422.46ns
sending of values from observable via distinct_until_changed to subscriber 3.14ns 3.28053 0.96 1.36ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 204.57ns 166.008 1.23 939.64ns
sending of values from observable via first to subscriber 0.70ns 1.61024 0.44 0.57ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 84.84ns 80.8058 1.05 890.77ns
error 134.45ns 139.18 0.97 1008.39ns
never 39.86ns 38.6122 1.03 340.92ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 105.68ns 101.993 1.04 920.64ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 0.99ns 1.61008 0.61 145.74ns
re-schedule 10 times 18.00ns 18.4418 0.98 190.56ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 115.28ns 84.9508 1.36 878.00ns
just send variadic 138.44ns 130.803 1.06 1031.44ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 247.00ns 210.997 1.17 578.97ns
sending of values from observable via last to subscriber 2.72ns 2.76658 0.98 1.41ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 100.76ns 98.4825 1.02 438.26ns
sending of values from observable via map to subscriber 0.90ns 0.904771 0.99 1.76ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 2142.40ns 2278.53 0.94 4349.38ns
merge_with 2588.15ns 2722.35 0.95 5386.29ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 580.57ns 567.452 1.02 3750.90ns
sending of values from observable via observe_on to subscriber 80.38ns 83.3275 0.96 277.34ns

on_error_resume_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_error_resume_next construction from observable via dot + subscribe 557.81ns 524.539 1.06 1064.38ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 25.15ns 26.9056 0.93 11.60ns
on_error 0.74ns 0.810696 0.92 18.90ns
on_completed 0.83ns 0.811947 1.02 0.71ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 238.35ns 256.899 0.93 204.16ns
get_observable 35.60ns 35.3883 1.01 62.81ns
get_subscriber 59.85ns 69.0128 0.87 25.13ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 4800.29ns 4901.69 0.98 3818.89ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 137.22ns 138.953 0.99 459.93ns
sending of values from observable via scan to subscriber 2.32ns 2.29802 1.01 3.67ns

single-threaded locks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no-lock increment 2.89ns 2.41269 1.20 .
mutex lock increment 20.83ns 21.7163 0.96 .
spin-lock increment 12.69ns 11.1225 1.14 .

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 148.65ns 137.152 1.08 613.32ns
sending of values from observable via skip to subscriber 2.98ns 3.19525 0.93 2.34ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 2849.75ns 2800.12 1.02 5334.14ns
sending of values from observable via switch_on_next to subscriber 713.26ns 719.05 0.99 1552.64ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 213.71ns 205.355 1.04 860.58ns
sending of values from observable via take to subscriber 4.13ns 4.20892 0.98 4.28ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 311.40ns 255.194 1.22 851.68ns
sending of values from observable via take_last to subscriber 3.06ns 4.04263 0.76 7.23ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 1195.58ns 1260.05 0.95 2182.50ns
sending of values from observable via take_until to subscriber 12.08ns 10.849 1.11 1.97ns

timeout

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
timeout construction from observable via dot + subscribe with run_loop 1056.17ns 1149.81 0.92 12059.20ns
sending of values from observable via timeout to subscriber with unreachable timeout interval with run_loop 60.79ns 72.5084 0.84 13989.20ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 25.47ns 25.3331 1.01 220.23ns
re-schedule 10 times 60.68ns 60.0266 1.01 273.91ns
recursively schedule 10 times 1822.84ns 1740.93 1.05 9703.75ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 3328.38ns 2464.82 1.35 4933.67ns
sending of values from observable via window to subscriber 716.81ns 713.77 1.00 445.25ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 1272.28ns 1311.39 0.97 1696.13ns
sending of values from observable via with_latest_from to subscriber 33.17ns 32.1491 1.03 4.10ns

ci-windows

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 1.41ns 1.50395 0.93 0.57ns
Dynamic observable construction 79.92ns 81.0701 0.99 149.34ns
Specific observable construction + as_dynamic 72.22ns 84.4058 0.86 152.43ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 135.76ns 143.75 0.94 1118.70ns
Specific observable lift dynamic observer 185.77ns 176.778 1.05 1173.60ns
Dynamic observable lift specific observer 315.88ns 284.911 1.11 1315.31ns
Dynamic observable lift dynamic observer 253.96ns 235.404 1.08 1749.00ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 130.66ns 110.708 1.18 1346.32ns
Specific observable subscribe dynamic observer 132.45ns 130.138 1.02 1130.62ns
Dynamic observable subscribe specific observer 291.29ns 230.259 1.27 1509.11ns
Dynamic observable subscribe dynamic observer 194.41ns 177.778 1.09 1095.65ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 119.60ns 111.043 1.08 1109.32ns
Dynamic observable subscribe lambda 193.06ns 230.339 0.84 1440.28ns
Specific observable subscribe lambda without subscription 98.87ns 120.281 0.82 1067.40ns
Dynamic observable subscribe lambda without subscription 230.23ns 230.035 1.00 1478.50ns
Specific observable subscribe specific subscriber 29.13ns 30.4332 0.96 738.83ns
Dynamic observable subscribe specific subscriber 123.69ns 147.659 0.84 1083.58ns
Specific observable subscribe dynamic observer 29.10ns 33.4446 0.87 818.28ns
Dynamic observable subscribe dynamic observer 69.96ns 78.6185 0.89 884.58ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 1.60ns 1.50481 1.06 1.39ns
Dynamic observer construction 79.40ns 113.555 0.70 110.45ns
Specific observer construction + as_dynamic 80.08ns 83.2997 0.96 101.01ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.64ns 0.669171 0.96 0.99ns
Dynamic observer OnNext 2.09ns 2.01932 1.03 2.11ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 105.77ns 84.0429 1.26 326.07ns
Make copy of subscriber 14.19ns 16.7204 0.85 35.99ns
Transform subsriber to dynamic 106.04ns 97.5551 1.09 141.74ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 75.20ns 83.8947 0.90 473.00ns
composite_subscription add 81.42ns 68.6541 1.19 177.00ns
composite_subscription unsubscribe 69.38ns 61.941 1.12 121.42ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 354.26ns 351.8 1.01 5421.00ns
sending of values from observable via buffer to subscriber 6.70ns 7.24804 0.92 101.41ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 244.84ns 269.776 0.91 2068.50ns
long stateful chain creation + subscribe 650.07ns 655.73 0.99 3664.80ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 1438.92ns 1594.62 0.90 3799.00ns
sending of values from observable via combine_latest to subscriber 57.39ns 47.6642 1.20 4.50ns

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 3730.67ns 2732.6 1.37 12830.50ns
concat_with 4314.43ns 3418.75 1.26 14942.00ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 186.18ns 183.619 1.01 1567.05ns
sending of values from observable via distinct_until_changed to subscriber 4.39ns 4.38288 1.00 11.80ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 125.44ns 127.804 0.98 3794.50ns
sending of values from observable via first to subscriber 2.63ns 2.34446 1.12 0.98ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 76.87ns 63.5136 1.21 2733.33ns
error 105.83ns 112.832 0.94 2775.25ns
never 32.63ns 30.8106 1.06 1045.55ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 136.53ns 135.358 1.01 3008.88ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 1.32ns 2.00865 0.66 439.90ns
re-schedule 10 times 109.00ns 97.8077 1.11 516.64ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 76.50ns 65.7518 1.16 2878.50ns
just send variadic 97.82ns 102.619 0.95 2985.88ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 211.99ns 223.07 0.95 1733.42ns
sending of values from observable via last to subscriber 3.35ns 3.63398 0.92 4.17ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 93.38ns 87.6907 1.06 1215.00ns
sending of values from observable via map to subscriber 2.91ns 3.51135 0.83 7.90ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 2568.20ns 2667.7 0.96 15368.00ns
merge_with 3300.88ns 3315.88 1.00 12901.00ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 659.38ns 624.1 1.06 7966.25ns
sending of values from observable via observe_on to subscriber 52.98ns 65.1671 0.81 1151.44ns

on_error_resume_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_error_resume_next construction from observable via dot + subscribe 612.73ns 636.59 0.96 3461.60ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 18.58ns 19.9614 0.93 38.39ns
on_error 2.88ns 2.81454 1.02 18.45ns
on_completed 2.24ns 3.0336 0.74 0.57ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 381.42ns 355.548 1.07 624.69ns
get_observable 26.89ns 26.1003 1.03 183.85ns
get_subscriber 49.74ns 50.1732 0.99 99.26ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 5451.00ns 6001.4 0.91 19037.50ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 190.68ns 182.207 1.05 1392.71ns
sending of values from observable via scan to subscriber 5.46ns 5.38541 1.01 8.58ns

single-threaded locks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no-lock increment 2.79ns 1.88627 1.48 .
mutex lock increment 22.98ns 25.7982 0.89 .
spin-lock increment 9.36ns 9.03675 1.04 .

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 182.02ns 177.083 1.03 1932.55ns
sending of values from observable via skip to subscriber 4.33ns 3.35659 1.29 4.50ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 4054.50ns 3494.5 1.16 15196.50ns
sending of values from observable via switch_on_next to subscriber 978.03ns 853.258 1.15 3621.57ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 254.18ns 224.03 1.13 2620.78ns
sending of values from observable via take to subscriber 5.52ns 5.94782 0.93 8.03ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 386.63ns 323.239 1.20 2976.12ns
sending of values from observable via take_last to subscriber 3.71ns 4.24898 0.87 29.84ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 1615.15ns 1584.0 1.02 6723.50ns
sending of values from observable via take_until to subscriber 12.42ns 13.2442 0.94 8.00ns

timeout

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
timeout construction from observable via dot + subscribe with run_loop 1398.53ns 1279.29 1.09 6449.00ns
sending of values from observable via timeout to subscriber with unreachable timeout interval with run_loop 57.98ns 55.2905 1.05 2223.73ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 17.00ns 18.7774 0.91 661.41ns
re-schedule 10 times 115.50ns 121.89 0.95 582.75ns
recursively schedule 10 times 3489.71ns 2622.0 1.33 23323.00ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 3312.12ns 2925.89 1.13 14772.00ns
sending of values from observable via window to subscriber 976.04ns 831.194 1.17 1863.08ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 1927.89ns 1971.08 0.98 4291.60ns
sending of values from observable via with_latest_from to subscriber 36.64ns 38.3612 0.96 8.67ns

@sonarqubecloud

Copy link
Copy Markdown

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

@AlexInLog AlexInLog merged commit ae351ec into main Nov 20, 2022
@AlexInLog AlexInLog deleted the fix_schedulable_issue branch November 20, 2022 20:15
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