Skip to content

Split lift#281

Merged
AlexInLog merged 34 commits into
mainfrom
split_lift
Oct 13, 2022
Merged

Split lift#281
AlexInLog merged 34 commits into
mainfrom
split_lift

Conversation

@AlexInLog

Copy link
Copy Markdown
Owner

Resolves #272

@codecov

codecov Bot commented Oct 11, 2022

Copy link
Copy Markdown

Codecov Report

Merging #281 (66683c8) into main (ef1eec6) will increase coverage by 0.00%.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##             main     #281   +/-   ##
=======================================
  Coverage   98.69%   98.70%           
=======================================
  Files         102      105    +3     
  Lines        1455     1466   +11     
=======================================
+ Hits         1436     1447   +11     
  Misses         19       19           
Impacted Files Coverage Δ
src/rpp/rpp/observables/interface_observable.hpp 100.00% <ø> (ø)
src/rpp/rpp/observers/specific_observer.hpp 100.00% <ø> (ø)
src/rpp/rpp/operators/buffer.hpp 100.00% <ø> (ø)
src/rpp/rpp/operators/combine_latest.hpp 100.00% <ø> (ø)
src/rpp/rpp/operators/concat.hpp 100.00% <ø> (ø)
src/rpp/rpp/operators/delay.hpp 100.00% <ø> (ø)
...pp/rpp/operators/details/serialized_subscriber.hpp 100.00% <ø> (ø)
src/rpp/rpp/operators/distinct_until_changed.hpp 100.00% <ø> (ø)
src/rpp/rpp/operators/do.hpp 100.00% <ø> (ø)
src/rpp/rpp/operators/filter.hpp 100.00% <ø> (ø)
... and 44 more

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

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

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)

Comment thread src/rpp/rpp/operators/fwd/lift.hpp
Comment thread src/rpp/rpp/operators/fwd/lift.hpp
Comment thread src/rpp/rpp/operators/fwd/lift.hpp
Comment thread src/rpp/rpp/operators/fwd/lift.hpp
Comment thread src/rpp/rpp/operators/fwd/lift.hpp
Comment thread src/rpp/rpp/operators/fwd/lift.hpp
Comment thread src/rpp/rpp/operators/fwd/lift.hpp
Comment thread src/rpp/rpp/operators/fwd/lift.hpp
@github-actions

github-actions Bot commented Oct 12, 2022

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.40ns 0.335032 1.20 0.40ns
Dynamic observable construction 28.54ns 29.1571 0.98 25.47ns
Specific observable construction + as_dynamic 28.60ns 29.1976 0.98 25.96ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 111.98ns 112.004 1.00 301.05ns
Specific observable lift dynamic observer 138.58ns 138.808 1.00 321.11ns
Dynamic observable lift specific observer 193.87ns 189.254 1.02 349.52ns
Dynamic observable lift dynamic observer 210.39ns 194.268 1.08 336.28ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 74.63ns 77.2746 0.97 292.68ns
Specific observable subscribe dynamic observer 89.72ns 87.9272 1.02 308.73ns
Dynamic observable subscribe specific observer 149.00ns 145.986 1.02 343.17ns
Dynamic observable subscribe dynamic observer 146.79ns 139.744 1.05 323.60ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 74.01ns 76.6028 0.97 294.59ns
Dynamic observable subscribe lambda 137.99ns 140.17 0.98 368.43ns
Specific observable subscribe lambda without subscription 74.77ns 76.2253 0.98 292.68ns
Dynamic observable subscribe lambda without subscription 139.50ns 142.442 0.98 335.60ns
Specific observable subscribe specific subscriber 41.83ns 43.2357 0.97 221.22ns
Dynamic observable subscribe specific subscriber 108.31ns 105.571 1.03 265.89ns
Specific observable subscribe dynamic observer 44.27ns 43.5293 1.02 243.69ns
Dynamic observable subscribe dynamic observer 96.96ns 93.9408 1.03 256.75ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.40ns 0.33509 1.20 0.40ns
Dynamic observer construction 31.51ns 29.1623 1.08 18.47ns
Specific observer construction + as_dynamic 28.64ns 29.1688 0.98 18.76ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.44ns 0.670233 0.66 0.44ns
Dynamic observer OnNext 2.01ns 2.00579 1.00 2.01ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 34.06ns 33.8065 1.01 67.10ns
Make copy of subscriber 16.07ns 16.7175 0.96 5.11ns
Transform subsriber to dynamic 47.58ns 46.1842 1.03 24.47ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 33.98ns 34.0425 1.00 51.18ns
composite_subscription add 56.21ns 47.652 1.18 91.15ns
composite_subscription unsubscribe 44.21ns 43.9478 1.01 21.93ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 261.65ns 266.687 0.98 1898.19ns
sending of values from observable via buffer to subscriber 6.48ns 6.36622 1.02 23.59ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 297.25ns 269.75 1.10 515.36ns
long stateful chain creation + subscribe 428.97ns 398.644 1.08 870.00ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 925.22ns 885.143 1.05 909.74ns
sending of values from observable via combine_latest to subscriber 41.77ns 27.8183 1.50 1.75ns

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 1962.87ns 1879.77 1.04 3647.38ns
concat_with 2328.31ns 2212.74 1.05 4077.25ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 131.75ns 127.699 1.03 259.92ns
sending of values from observable via distinct_until_changed to subscriber 2.81ns 2.9644 0.95 1.29ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 154.61ns 141.324 1.09 623.43ns
sending of values from observable via first to subscriber 0.60ns 0.670479 0.90 0.81ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 84.56ns 83.9836 1.01 669.91ns
error 133.68ns 135.628 0.99 796.60ns
never 45.51ns 47.022 0.97 250.26ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 97.16ns 98.6255 0.99 709.34ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 0.68ns 0.671073 1.01 112.14ns
re-schedule 10 times 10.46ns 9.39588 1.11 140.28ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 85.03ns 85.6545 0.99 666.96ns
just send variadic 108.49ns 116.244 0.93 777.13ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 190.80ns 185.87 1.03 372.61ns
sending of values from observable via last to subscriber 2.88ns 2.49505 1.15 1.61ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 97.85ns 89.2269 1.10 238.29ns
sending of values from observable via map to subscriber 1.01ns 1.00511 1.00 1.74ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 1915.00ns 1835.84 1.04 3639.88ns
merge_with 2285.15ns 2165.95 1.06 4012.00ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 470.69ns 450.605 1.04 2519.25ns
sending of values from observable via observe_on to subscriber 59.97ns 60.6517 0.99 198.68ns

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 453.69ns 17.0354 26.63 545.74ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 29.94ns 24.0719 1.24 8.60ns
on_error 0.61ns 0.505069 1.20 19.03ns
on_completed 0.61ns 0.506057 1.20 0.60ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 196.56ns 203.317 0.97 154.67ns
get_observable 33.75ns 29.1278 1.16 45.35ns
get_subscriber 66.57ns 60.0654 1.11 12.49ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 4166.86ns 3929.81 1.06 3131.10ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 127.28ns 124.64 1.02 297.12ns
sending of values from observable via scan to subscriber 1.81ns 1.67687 1.08 1.93ns

single-threaded locks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no-lock increment 3.12ns 2.02017 1.55 .
mutex lock increment 22.49ns 18.0461 1.25 .
spin-lock increment 10.43ns 9.19224 1.13 .

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 125.76ns 118.843 1.06 475.88ns
sending of values from observable via skip to subscriber 2.24ns 1.69274 1.32 2.57ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 2333.84ns 2212.94 1.05 3059.50ns
sending of values from observable via switch_on_next to subscriber 606.25ns 565.534 1.07 706.10ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 196.16ns 188.9 1.04 500.50ns
sending of values from observable via take to subscriber 2.50ns 2.34459 1.06 2.48ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 231.39ns 229.204 1.01 545.08ns
sending of values from observable via take_last to subscriber 3.16ns 2.93484 1.08 3.61ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 1092.89ns 1054.91 1.04 1275.35ns
sending of values from observable via take_until to subscriber 10.48ns 9.10066 1.15 1.85ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 10.34ns 12.4133 0.83 152.68ns
re-schedule 10 times 28.19ns 31.4235 0.90 189.84ns
recursively schedule 10 times 1416.00ns 1382.24 1.02 5396.17ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 2200.92ns 2011.48 1.09 3299.89ns
sending of values from observable via window to subscriber 590.90ns 543.46 1.09 375.29ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 1069.04ns 1032.69 1.04 1156.47ns
sending of values from observable via with_latest_from to subscriber 28.95ns 26.7825 1.08 2.46ns

ci-ubuntu-gcc

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 0.34ns 0.401305 0.84 0.33ns
Dynamic observable construction 31.54ns 28.7556 1.10 23.94ns
Specific observable construction + as_dynamic 31.59ns 29.528 1.07 23.32ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 119.17ns 116.691 1.02 345.23ns
Specific observable lift dynamic observer 144.69ns 146.343 0.99 356.04ns
Dynamic observable lift specific observer 199.76ns 202.625 0.99 386.60ns
Dynamic observable lift dynamic observer 207.59ns 218.067 0.95 367.94ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 82.87ns 79.9702 1.04 331.16ns
Specific observable subscribe dynamic observer 95.26ns 96.7937 0.98 337.21ns
Dynamic observable subscribe specific observer 150.50ns 148.715 1.01 390.13ns
Dynamic observable subscribe dynamic observer 145.77ns 151.386 0.96 346.42ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 83.35ns 79.7757 1.04 324.34ns
Dynamic observable subscribe lambda 150.83ns 149.262 1.01 367.17ns
Specific observable subscribe lambda without subscription 83.37ns 79.3638 1.05 327.16ns
Dynamic observable subscribe lambda without subscription 150.85ns 149.313 1.01 383.68ns
Specific observable subscribe specific subscriber 50.25ns 49.1522 1.02 275.16ns
Dynamic observable subscribe specific subscriber 117.00ns 117.47 1.00 309.77ns
Specific observable subscribe dynamic observer 50.21ns 49.0832 1.02 275.51ns
Dynamic observable subscribe dynamic observer 102.25ns 103.9 0.98 285.10ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.34ns 0.40213 0.83 0.33ns
Dynamic observer construction 31.54ns 30.1147 1.05 21.28ns
Specific observer construction + as_dynamic 31.56ns 28.8027 1.10 21.15ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.34ns 0.427083 0.78 0.33ns
Dynamic observer OnNext 2.01ns 1.60736 1.25 2.01ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 34.54ns 34.5462 1.00 60.24ns
Make copy of subscriber 16.75ns 16.0876 1.04 4.45ns
Transform subsriber to dynamic 44.33ns 45.4963 0.97 25.05ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 34.41ns 33.8019 1.02 57.53ns
composite_subscription add 47.76ns 51.3278 0.93 96.65ns
composite_subscription unsubscribe 42.10ns 43.325 0.97 21.74ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 259.28ns 256.79 1.01 1928.59ns
sending of values from observable via buffer to subscriber 6.26ns 6.25651 1.00 30.76ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 298.95ns 324.478 0.92 679.60ns
long stateful chain creation + subscribe 430.80ns 458.297 0.94 1051.97ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 934.01ns 974.184 0.96 1099.83ns
sending of values from observable via combine_latest to subscriber 27.45ns 34.1471 0.80 2.34ns

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 1926.27ns 2043.34 0.94 3615.93ns
concat_with 2274.03ns 2417.55 0.94 3967.17ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 137.45ns 141.034 0.97 348.28ns
sending of values from observable via distinct_until_changed to subscriber 3.69ns 2.80982 1.31 1.34ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 161.16ns 166.349 0.97 708.36ns
sending of values from observable via first to subscriber 0.67ns 0.804591 0.83 1.01ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 86.43ns 86.7819 1.00 748.56ns
error 131.68ns 137.11 0.96 833.51ns
never 50.33ns 47.5769 1.06 284.28ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 107.36ns 103.531 1.04 776.88ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 1.68ns 1.19704 1.40 128.33ns
re-schedule 10 times 22.78ns 19.9422 1.14 154.57ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 90.10ns 91.3789 0.99 785.48ns
just send variadic 133.57ns 113.196 1.18 812.66ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 196.88ns 202.611 0.97 427.12ns
sending of values from observable via last to subscriber 2.68ns 1.77715 1.51 1.34ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 100.80ns 108.079 0.93 345.39ns
sending of values from observable via map to subscriber 0.84ns 1.00263 0.84 2.35ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 1853.71ns 2003.41 0.93 3743.67ns
merge_with 2222.53ns 2394.17 0.93 4047.17ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 480.21ns 504.926 0.95 2857.03ns
sending of values from observable via observe_on to subscriber 62.31ns 67.165 0.93 238.57ns

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 464.75ns 16.4145 28.31 638.45ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 22.76ns 29.8775 0.76 11.41ns
on_error 1.01ns 1.21243 0.84 16.80ns
on_completed 0.67ns 0.809354 0.83 0.67ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 200.55ns 206.644 0.97 173.31ns
get_observable 29.45ns 33.3388 0.88 47.75ns
get_subscriber 57.22ns 63.9694 0.89 23.07ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 4103.93ns 4406.61 0.93 3145.64ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 138.29ns 136.542 1.01 385.94ns
sending of values from observable via scan to subscriber 3.01ns 2.41148 1.25 1.59ns

single-threaded locks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no-lock increment 2.00ns 1.99104 1.01 .
mutex lock increment 18.06ns 22.5121 0.80 .
spin-lock increment 9.02ns 10.4442 0.86 .

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 134.05ns 133.317 1.01 556.42ns
sending of values from observable via skip to subscriber 3.02ns 2.81445 1.07 2.35ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 2322.03ns 2504.26 0.93 4246.05ns
sending of values from observable via switch_on_next to subscriber 590.65ns 628.578 0.94 1063.87ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 192.92ns 193.173 1.00 594.95ns
sending of values from observable via take to subscriber 4.09ns 3.65684 1.12 4.03ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 230.28ns 243.46 0.95 634.96ns
sending of values from observable via take_last to subscriber 3.36ns 3.36904 1.00 6.13ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 1080.73ns 1151.16 0.94 1576.52ns
sending of values from observable via take_until to subscriber 9.04ns 10.8268 0.84 1.79ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 21.16ns 20.88 1.01 186.20ns
re-schedule 10 times 49.20ns 39.5922 1.24 213.41ns
recursively schedule 10 times 1418.30ns 1420.05 1.00 6288.68ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 2148.38ns 2270.47 0.95 3256.14ns
sending of values from observable via window to subscriber 580.18ns 613.273 0.95 421.83ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 1104.72ns 1134.97 0.97 1454.52ns
sending of values from observable via with_latest_from to subscriber 26.10ns 30.5217 0.85 3.98ns

ci-windows

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 1.73ns 1.91275 0.91 0.67ns
Dynamic observable construction 79.86ns 69.2514 1.15 123.26ns
Specific observable construction + as_dynamic 80.43ns 68.4023 1.18 123.24ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 175.99ns 153.756 1.14 1232.95ns
Specific observable lift dynamic observer 202.12ns 183.773 1.10 1474.05ns
Dynamic observable lift specific observer 299.85ns 270.822 1.11 1417.00ns
Dynamic observable lift dynamic observer 260.26ns 246.804 1.05 1373.20ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 138.88ns 119.507 1.16 1191.86ns
Specific observable subscribe dynamic observer 152.08ns 131.332 1.16 1235.00ns
Dynamic observable subscribe specific observer 256.49ns 219.927 1.17 1374.05ns
Dynamic observable subscribe dynamic observer 201.14ns 182.26 1.10 1253.48ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 138.84ns 118.688 1.17 1185.68ns
Dynamic observable subscribe lambda 255.52ns 220.1 1.16 1363.37ns
Specific observable subscribe lambda without subscription 139.40ns 119.281 1.17 1181.45ns
Dynamic observable subscribe lambda without subscription 255.87ns 219.309 1.17 1362.58ns
Specific observable subscribe specific subscriber 49.30ns 44.0792 1.12 900.23ns
Dynamic observable subscribe specific subscriber 164.49ns 146.055 1.13 1032.76ns
Specific observable subscribe dynamic observer 52.17ns 47.1772 1.11 888.57ns
Dynamic observable subscribe dynamic observer 101.08ns 97.3252 1.04 993.25ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 1.72ns 1.94515 0.88 1.74ns
Dynamic observer construction 81.85ns 69.5552 1.18 114.00ns
Specific observer construction + as_dynamic 81.89ns 69.5347 1.18 113.72ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.67ns 0.779272 0.86 0.67ns
Dynamic observer OnNext 1.67ns 1.95443 0.86 2.34ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 84.45ns 70.59 1.20 394.01ns
Make copy of subscriber 16.71ns 15.5659 1.07 31.44ns
Transform subsriber to dynamic 96.09ns 83.3589 1.15 151.52ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 84.41ns 70.9038 1.19 351.11ns
composite_subscription add 68.67ns 68.2602 1.01 149.73ns
composite_subscription unsubscribe 63.12ns 57.6815 1.09 123.11ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 379.85ns 353.688 1.07 4480.50ns
sending of values from observable via buffer to subscriber 6.36ns 6.88746 0.92 94.57ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 282.21ns 302.779 0.93 1727.00ns
long stateful chain creation + subscribe 684.06ns 655.611 1.04 3192.38ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 1657.93ns 1539.86 1.08 3000.38ns
sending of values from observable via combine_latest to subscriber 47.25ns 44.9756 1.05 4.53ns

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 2766.89ns 2930.4 0.94 10622.70ns
concat_with 3430.38ns 3499.5 0.98 11580.00ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 201.18ns 204.48 0.98 1024.84ns
sending of values from observable via distinct_until_changed to subscriber 3.68ns 3.12188 1.18 4.23ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 147.84ns 150.81 0.98 2603.50ns
sending of values from observable via first to subscriber 2.87ns 2.30557 1.24 1.80ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 82.20ns 78.8527 1.04 2396.36ns
error 139.43ns 163.547 0.85 2467.18ns
never 52.59ns 45.4896 1.16 885.27ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 158.55ns 134.675 1.18 2461.45ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 1.76ns 1.56187 1.13 409.86ns
re-schedule 10 times 97.81ns 126.416 0.77 436.67ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 88.76ns 83.7918 1.06 2482.91ns
just send variadic 139.49ns 121.2 1.15 2469.00ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 242.09ns 226.167 1.07 1439.41ns
sending of values from observable via last to subscriber 3.24ns 3.05808 1.06 3.83ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 105.03ns 108.298 0.97 994.00ns
sending of values from observable via map to subscriber 3.35ns 3.43621 0.98 7.71ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 2714.00ns 2766.2 0.98 10907.70ns
merge_with 3370.25ns 3272.38 1.03 11637.00ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 747.81ns 603.973 1.24 5654.60ns
sending of values from observable via observe_on to subscriber 63.54ns 61.0512 1.04 847.67ns

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 667.61ns 24.1657 27.63 1794.77ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 21.04ns 22.2873 0.94 32.51ns
on_error 3.04ns 2.75722 1.10 18.42ns
on_completed 3.06ns 2.81775 1.09 1.36ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 360.66ns 320.707 1.12 592.27ns
get_observable 28.42ns 30.4768 0.93 163.77ns
get_subscriber 50.22ns 59.8209 0.84 94.00ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 6103.00ns 5700.8 1.07 11191.30ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 205.66ns 185.817 1.11 1252.43ns
sending of values from observable via scan to subscriber 5.69ns 5.17035 1.10 10.75ns

single-threaded locks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no-lock increment 1.87ns 3.09574 0.61 .
mutex lock increment 25.74ns 23.205 1.11 .
spin-lock increment 9.03ns 10.1384 0.89 .

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 195.73ns 183.474 1.07 1523.50ns
sending of values from observable via skip to subscriber 3.68ns 3.11717 1.18 4.07ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 3519.86ns 4200.57 0.84 12038.00ns
sending of values from observable via switch_on_next to subscriber 855.43ns 813.933 1.05 3100.33ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 248.01ns 233.663 1.06 2152.58ns
sending of values from observable via take to subscriber 5.61ns 5.90842 0.95 5.69ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 345.09ns 320.9 1.08 2458.91ns
sending of values from observable via take_last to subscriber 4.36ns 3.94821 1.10 20.62ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 1875.50ns 1601.31 1.17 5213.00ns
sending of values from observable via take_until to subscriber 11.47ns 11.7247 0.98 6.48ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 19.41ns 17.6796 1.10 612.85ns
re-schedule 10 times 121.11ns 139.607 0.87 644.38ns
recursively schedule 10 times 2674.50ns 2411.45 1.11 19129.00ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 2943.78ns 2886.11 1.02 9650.00ns
sending of values from observable via window to subscriber 826.87ns 816.7 1.01 1619.31ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 2054.58ns 1805.17 1.14 3772.33ns
sending of values from observable via with_latest_from to subscriber 38.13ns 34.9052 1.09 7.26ns

@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 5 Code Smells

0.0% 0.0% Coverage
0.0% 0.0% Duplication

@AlexInLog AlexInLog merged commit bd0d211 into main Oct 13, 2022
@AlexInLog AlexInLog deleted the split_lift branch October 13, 2022 19:49
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.

Split "lift" to declaration and implementation

1 participant