ReactivePlusPlus icon indicating copy to clipboard operation
ReactivePlusPlus copied to clipboard

Add "last" operator

Open tcw165 opened this issue 2 years ago • 3 comments

tcw165 avatar Aug 21 '22 06:08 tcw165

Linux CLANG

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 0.44ns 0.403254 1.08 0.36ns
Dynamic observable construction 27.69ns 35.0398 0.79 27.86ns
Specific observable construction + as_dynamic 31.31ns 35.035 0.89 23.98ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 153.87ns 203.792 0.76 396.16ns
Specific observable lift dynamic observer 177.86ns 233.293 0.76 340.47ns
Dynamic observable lift specific observer 234.66ns 289.511 0.81 389.14ns
Dynamic observable lift dynamic observer 246.89ns 296.722 0.83 472.33ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 122.98ns 157.078 0.78 320.33ns
Specific observable subscribe dynamic observer 162.77ns 170.2 0.96 428.25ns
Dynamic observable subscribe specific observer 201.67ns 236.026 0.85 421.40ns
Dynamic observable subscribe dynamic observer 185.03ns 229.534 0.81 387.78ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 129.94ns 154.472 0.84 416.43ns
Dynamic observable subscribe lambda 188.72ns 233.974 0.81 389.41ns
Specific observable subscribe lambda without subscription 138.28ns 154.36 0.90 423.67ns
Dynamic observable subscribe lambda without subscription 229.78ns 235.502 0.98 408.36ns
Specific observable subscribe specific subscriber 113.97ns 115.561 0.99 342.83ns
Dynamic observable subscribe specific subscriber 182.03ns 191.276 0.95 372.87ns
Specific observable subscribe dynamic observer 108.12ns 117.891 0.92 303.65ns
Dynamic observable subscribe dynamic observer 191.31ns 184.084 1.04 339.56ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.36ns 0.402533 0.89 0.31ns
Dynamic observer construction 33.42ns 35.0087 0.95 23.37ns
Specific observer construction + as_dynamic 31.81ns 35.0291 0.91 21.27ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.77ns 0.804131 0.96 0.63ns
Dynamic observer OnNext 2.28ns 2.40881 0.95 2.36ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 30.73ns 38.9977 0.79 69.67ns
Make copy of subscriber 17.62ns 20.0961 0.88 4.81ns
Transform subsriber to dynamic 44.50ns 55.0733 0.81 24.65ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 36.50ns 39.04 0.93 47.64ns
composite_subscription add 40.51ns 45.927 0.88 21.99ns
composite_subscription unsubscribe 6.20ns 7.15976 0.87 10.81ns
composite_subscription unsubscribe only subscribed 6.88ns 10.0295 0.69 10.98ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 322.07ns 416.68 0.77 1971.30ns
sending of values from observable via buffer to subscriber 4.87ns 4.80116 1.01 27.46ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 318.75ns 393.514 0.81 688.29ns
long stateful chain creation + subscribe 483.81ns 587.224 0.82 1108.48ns

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 1746.05ns 1635.54 1.07 3927.60ns
concat_with 1750.23ns 1962.53 0.89 5987.68ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 191.50ns 216.8 0.88 399.50ns
sending of values from observable via distinct_until_changed to subscriber 3.26ns 3.35066 0.97 1.29ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 134.29ns 159.142 0.84 831.46ns
error 174.91ns 221.913 0.79 1036.31ns
never 93.63ns 118.296 0.79 389.71ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 172.04ns 178.427 0.96 925.13ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 27.41ns 33.7063 0.81 190.73ns
re-schedule 10 times 563.61ns 699.788 0.81 197.40ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 159.47ns 161.081 0.99 827.97ns
just send variadic 172.36ns 199.685 0.86 904.62ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 265.38ns None . 716.88ns
sending of values from observable via last to subscriber 1.94ns None . 3.79ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 160.29ns 175.78 0.91 349.73ns
sending of values from observable via map to subscriber 1.26ns 1.20685 1.04 1.83ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 1485.44ns 1706.82 0.87 3863.48ns
merge_with 2150.06ns 2104.94 1.02 5135.83ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 726.33ns 854.992 0.85 3322.21ns
sending of values from observable via observe_on to subscriber 97.20ns 107.843 0.90 248.16ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 31.23ns 29.3199 1.07 10.56ns
on_error 2.10ns 2.02153 1.04 17.62ns
on_completed 2.95ns 2.65178 1.11 0.46ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 172.25ns 189.585 0.91 202.18ns
get_observable 30.24ns 34.9376 0.87 55.92ns
get_subscriber 69.63ns 71.3883 0.98 12.36ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 4328.36ns 4436.23 0.98 3526.11ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 201.03ns 214.766 0.94 376.79ns
sending of values from observable via scan to subscriber 2.65ns 2.41102 1.10 1.68ns

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 180.90ns 217.745 0.83 574.77ns
sending of values from observable via skip to subscriber 2.32ns 2.41636 0.96 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 3221.99ns 2364.52 1.36 3544.98ns
sending of values from observable via switch_on_next to subscriber 494.70ns 576.507 0.86 750.54ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 262.26ns 283.316 0.93 503.30ns
sending of values from observable via take to subscriber 2.68ns 3.22405 0.83 2.39ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 40.49ns 43.0107 0.94 224.79ns
re-schedule 10 times 640.72ns 729.519 0.88 361.91ns
recursively schedule 10 times 1711.32ns 2007.95 0.85 6841.37ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 2100.57ns 2374.75 0.88 3792.98ns
sending of values from observable via window to subscriber 536.95ns 611.133 0.88 471.56ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 896.73ns 954.016 0.94 1300.26ns
sending of values from observable via with_latest_from to subscriber 22.63ns 21.3068 1.06 2.59ns

Linux GCC

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 0.34ns 0.335012 1.00 0.34ns
Dynamic observable construction 31.50ns 31.4748 1.00 22.80ns
Specific observable construction + as_dynamic 34.52ns 31.6707 1.09 22.38ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 176.66ns 175.849 1.00 337.19ns
Specific observable lift dynamic observer 196.97ns 196.79 1.00 352.04ns
Dynamic observable lift specific observer 251.53ns 251.137 1.00 386.01ns
Dynamic observable lift dynamic observer 258.68ns 258.316 1.00 365.35ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 137.78ns 138.606 0.99 332.10ns
Specific observable subscribe dynamic observer 147.71ns 147.244 1.00 340.01ns
Dynamic observable subscribe specific observer 207.70ns 203.702 1.02 369.24ns
Dynamic observable subscribe dynamic observer 201.13ns 200.382 1.00 343.62ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 138.21ns 145.51 0.95 332.98ns
Dynamic observable subscribe lambda 204.40ns 203.212 1.01 375.26ns
Specific observable subscribe lambda without subscription 137.46ns 138.116 1.00 332.46ns
Dynamic observable subscribe lambda without subscription 203.50ns 203.79 1.00 376.81ns
Specific observable subscribe specific subscriber 102.67ns 102.37 1.00 276.33ns
Dynamic observable subscribe specific subscriber 167.75ns 168.433 1.00 322.71ns
Specific observable subscribe dynamic observer 102.75ns 102.967 1.00 280.45ns
Dynamic observable subscribe dynamic observer 153.51ns 153.466 1.00 290.76ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.34ns 0.334639 1.00 0.33ns
Dynamic observer construction 31.49ns 33.1563 0.95 20.93ns
Specific observer construction + as_dynamic 31.60ns 31.5486 1.00 20.80ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.34ns 0.334601 1.00 0.34ns
Dynamic observer OnNext 2.01ns 2.00994 1.00 1.99ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 31.66ns 31.1232 1.02 60.00ns
Make copy of subscriber 16.75ns 16.7374 1.00 5.49ns
Transform subsriber to dynamic 44.31ns 44.2995 1.00 27.08ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 31.46ns 31.1656 1.01 56.10ns
composite_subscription add 43.40ns 39.467 1.10 17.83ns
composite_subscription unsubscribe 6.85ns 6.91324 0.99 10.05ns
composite_subscription unsubscribe only subscribed 8.33ns 8.3331 1.00 11.17ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 353.44ns 352.32 1.00 1894.31ns
sending of values from observable via buffer to subscriber 5.34ns 6.36486 0.84 31.62ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 351.06ns 353.419 0.99 748.77ns
long stateful chain creation + subscribe 487.03ns 485.413 1.00 1046.59ns

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 1466.69ns 1484.91 0.99 3704.65ns
concat_with 1764.05ns 1774.6 0.99 4134.39ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 191.80ns 192.315 1.00 350.96ns
sending of values from observable via distinct_until_changed to subscriber 3.69ns 3.68525 1.00 1.34ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 143.56ns 141.097 1.02 737.80ns
error 188.96ns 190.072 0.99 843.58ns
never 103.37ns 104.222 0.99 280.77ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 162.31ns 161.05 1.01 764.40ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 27.80ns 27.7991 1.00 131.38ns
re-schedule 10 times 609.45ns 607.8 1.00 159.01ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 144.07ns 144.236 1.00 762.97ns
just send variadic 178.98ns 186.251 0.96 822.16ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 247.66ns None . 604.40ns
sending of values from observable via last to subscriber 1.67ns None . 6.15ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 157.40ns 156.691 1.00 340.15ns
sending of values from observable via map to subscriber 1.34ns 0.950847 1.41 2.68ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 1516.25ns 1561.48 0.97 3851.10ns
merge_with 1881.74ns 1902.51 0.99 4166.36ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 763.64ns 756.762 1.01 2894.17ns
sending of values from observable via observe_on to subscriber 89.73ns 90.388 0.99 249.56ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 22.42ns 22.741 0.99 12.23ns
on_error 2.20ns 2.4434 0.90 16.80ns
on_completed 0.67ns 0.674171 1.00 0.67ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 163.57ns 170.88 0.96 171.71ns
get_observable 29.42ns 29.4206 1.00 48.70ns
get_subscriber 57.41ns 57.2196 1.00 23.05ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 3962.86ns 3954.15 1.00 3148.78ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 192.33ns 189.751 1.01 389.92ns
sending of values from observable via scan to subscriber 3.01ns 3.01427 1.00 2.34ns

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 187.46ns 189.806 0.99 559.36ns
sending of values from observable via skip to subscriber 3.69ns 3.01571 1.22 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 16843.70ns 15439.1 1.09 4422.40ns
sending of values from observable via switch_on_next to subscriber 586.62ns 566.406 1.04 1085.31ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 245.66ns 244.787 1.00 590.00ns
sending of values from observable via take to subscriber 5.22ns 3.69029 1.42 3.54ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 40.49ns 40.3178 1.00 187.83ns
re-schedule 10 times 652.30ns 650.852 1.00 216.43ns
recursively schedule 10 times 1717.49ns 1706.95 1.01 6415.96ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 2112.39ns 2099.55 1.01 3233.18ns
sending of values from observable via window to subscriber 549.90ns 545.603 1.01 422.77ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 856.27ns 844.586 1.01 1431.72ns
sending of values from observable via with_latest_from to subscriber 18.05ns 18.0433 1.00 4.19ns

Windows MSVC

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 1.68ns 1.50415 1.12 0.80ns
Dynamic observable construction 95.83ns 93.3754 1.03 149.41ns
Specific observable construction + as_dynamic 95.00ns 89.2148 1.06 150.09ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 277.29ns 253.873 1.09 1370.22ns
Specific observable lift dynamic observer 288.23ns 262.48 1.10 1423.23ns
Dynamic observable lift specific observer 443.97ns 366.743 1.21 1666.45ns
Dynamic observable lift dynamic observer 385.44ns 320.513 1.20 1544.24ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 218.00ns 200.031 1.09 1393.65ns
Specific observable subscribe dynamic observer 255.05ns 209.081 1.22 1366.70ns
Dynamic observable subscribe specific observer 379.30ns 320.963 1.18 1497.26ns
Dynamic observable subscribe dynamic observer 305.54ns 262.856 1.16 1458.09ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 227.54ns 197.767 1.15 1404.48ns
Dynamic observable subscribe lambda 381.24ns 318.37 1.20 1585.20ns
Specific observable subscribe lambda without subscription 223.85ns 400.547 0.56 1802.48ns
Dynamic observable subscribe lambda without subscription 361.33ns 369.475 0.98 1642.26ns
Specific observable subscribe specific subscriber 127.98ns 101.98 1.25 1008.13ns
Dynamic observable subscribe specific subscriber 275.92ns 228.333 1.21 1253.88ns
Specific observable subscribe dynamic observer 127.30ns 102.183 1.25 1048.90ns
Dynamic observable subscribe dynamic observer 189.59ns 155.476 1.22 1125.56ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 2.20ns 1.50466 1.46 1.80ns
Dynamic observer construction 90.88ns 88.8281 1.02 138.13ns
Specific observer construction + as_dynamic 97.65ns 88.8112 1.10 137.00ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.79ns 0.668748 1.18 0.78ns
Dynamic observer OnNext 2.38ns 2.00683 1.19 2.03ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 96.54ns 88.6491 1.09 406.48ns
Make copy of subscriber 17.02ns 16.7189 1.02 36.51ns
Transform subsriber to dynamic 110.71ns 104.498 1.06 167.64ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 102.19ns 88.2014 1.16 384.51ns
composite_subscription add 71.56ns 57.8047 1.24 74.58ns
composite_subscription unsubscribe 8.29ns 8.36114 0.99 31.32ns
composite_subscription unsubscribe only subscribed 8.16ns 7.22818 1.13 30.28ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 592.18ns 492.354 1.20 8094.75ns
sending of values from observable via buffer to subscriber 6.15ns 6.06182 1.01 110.72ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 422.05ns 352.446 1.20 1987.47ns
long stateful chain creation + subscribe 858.41ns 773.581 1.11 3752.62ns

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 2469.50ns 2087.25 1.18 15300.50ns
concat_with 4639.90ns 2743.4 1.69 16763.00ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 294.27ns 257.64 1.14 1188.65ns
sending of values from observable via distinct_until_changed to subscriber 3.83ns 3.7189 1.03 4.83ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 167.58ns 138.211 1.21 2888.36ns
error 214.59ns 189.096 1.13 2851.09ns
never 128.38ns 109.428 1.17 990.85ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 255.05ns 209.386 1.22 2953.45ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 33.32ns 27.4301 1.21 492.59ns
re-schedule 10 times 635.26ns 570.622 1.11 509.65ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 174.56ns 161.348 1.08 7385.73ns
just send variadic 199.19ns 182.798 1.09 2865.45ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 428.26ns None . 7718.00ns
sending of values from observable via last to subscriber 3.16ns None . 12.98ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 182.39ns 163.948 1.11 1154.25ns
sending of values from observable via map to subscriber 4.19ns 3.92174 1.07 6.97ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 2242.75ns 2166.17 1.04 18860.50ns
merge_with 3106.90ns 2836.44 1.10 17616.50ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 1282.77ns 1013.48 1.27 5895.80ns
sending of values from observable via observe_on to subscriber 99.28ns 90.2344 1.10 949.23ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 22.97ns 19.9097 1.15 37.81ns
on_error 3.24ns 2.70319 1.20 27.15ns
on_completed 3.23ns 2.69455 1.20 1.53ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 320.39ns 280.859 1.14 702.60ns
get_observable 47.15ns 25.9604 1.82 193.19ns
get_subscriber 58.34ns 50.2024 1.16 111.94ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 6923.20ns 5953.0 1.16 12930.00ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 303.62ns 269.774 1.13 2236.27ns
sending of values from observable via scan to subscriber 6.44ns 5.50271 1.17 10.60ns

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 271.44ns 251.206 1.08 1841.50ns
sending of values from observable via skip to subscriber 4.88ns 3.42815 1.42 4.33ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 3780.00ns 3164.5 1.19 14866.30ns
sending of values from observable via switch_on_next to subscriber 751.75ns 821.206 0.92 3675.78ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 487.64ns 315.77 1.54 2538.38ns
sending of values from observable via take to subscriber 6.01ns 6.21362 0.97 7.12ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 51.75ns 44.1892 1.17 692.34ns
re-schedule 10 times 728.90ns 608.881 1.20 777.74ns
recursively schedule 10 times 3659.11ns 3008.11 1.22 22652.00ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 3514.11ns 2924.67 1.20 16485.00ns
sending of values from observable via window to subscriber 920.58ns 804.125 1.14 1861.88ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 1942.78ns 1455.63 1.33 4703.33ns
sending of values from observable via with_latest_from to subscriber 32.82ns 29.2174 1.12 8.85ns

github-actions[bot] avatar Aug 21 '22 06:08 github-actions[bot]

Codecov Report

Merging #223 (05ff084) into main (cd8da3d) will increase coverage by 0.01%. The diff coverage is 100.00%.

:exclamation: Current head 05ff084 differs from pull request most recent head 5c835f0. Consider uploading reports for the commit 5c835f0 to get more accurate results

@@            Coverage Diff             @@
##             main     #223      +/-   ##
==========================================
+ Coverage   98.54%   98.56%   +0.01%     
==========================================
  Files          95       97       +2     
  Lines        1376     1392      +16     
==========================================
+ Hits         1356     1372      +16     
  Misses         20       20              
Impacted Files Coverage Δ
src/rpp/rpp/observables/interface_observable.hpp 100.00% <ø> (ø)
src/rpp/rpp/operators/fwd/last.hpp 100.00% <100.00%> (ø)
src/rpp/rpp/operators/last.hpp 100.00% <100.00%> (ø)

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

codecov[bot] avatar Aug 21 '22 06:08 codecov[bot]

Same as for first i prefer re-using take_last for on_next. But let me to implement take_last by my own because I have some ideas about doing it in the more optimal way than in rxcpp

victimsnino avatar Aug 21 '22 09:08 victimsnino

BENCHMARK RESULTS (AUTOGENERATED)

ci-ubuntu-clang

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 0.30ns 0.323516 0.92 0.29ns
Dynamic observable construction 25.32ns 28.1991 0.90 21.48ns
Specific observable construction + as_dynamic 25.86ns 41.0765 0.63 21.75ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 100.17ns 120.813 0.83 256.80ns
Specific observable lift dynamic observer 118.93ns 136.373 0.87 272.43ns
Dynamic observable lift specific observer 164.06ns 187.682 0.87 293.78ns
Dynamic observable lift dynamic observer 170.71ns 191.903 0.89 286.85ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 66.74ns 80.7699 0.83 251.75ns
Specific observable subscribe dynamic observer 81.25ns 97.2275 0.84 260.62ns
Dynamic observable subscribe specific observer 134.65ns 145.226 0.93 288.12ns
Dynamic observable subscribe dynamic observer 120.52ns 146.838 0.82 276.80ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 62.70ns 90.1194 0.70 252.96ns
Dynamic observable subscribe lambda 125.56ns 148.046 0.85 269.54ns
Specific observable subscribe lambda without subscription 68.39ns 88.7771 0.77 254.73ns
Dynamic observable subscribe lambda without subscription 123.85ns 167.251 0.74 288.01ns
Specific observable subscribe specific subscriber 36.47ns 44.2592 0.82 188.34ns
Dynamic observable subscribe specific subscriber 95.19ns 102.728 0.93 236.60ns
Specific observable subscribe dynamic observer 38.38ns 51.6203 0.74 203.96ns
Dynamic observable subscribe dynamic observer 83.12ns 103.708 0.80 213.36ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.29ns 0.380775 0.77 0.29ns
Dynamic observer construction 25.80ns 32.8731 0.78 18.66ns
Specific observer construction + as_dynamic 26.49ns 32.6141 0.81 18.54ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.60ns 0.649991 0.92 0.59ns
Dynamic observer OnNext 1.48ns 1.96814 0.75 2.05ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 30.26ns 41.6186 0.73 56.88ns
Make copy of subscriber 14.63ns 17.6231 0.83 4.16ns
Transform subsriber to dynamic 38.40ns 42.6318 0.90 23.17ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 30.00ns 38.9427 0.77 46.81ns
composite_subscription add 42.87ns 51.991 0.82 81.75ns
composite_subscription unsubscribe 39.13ns 52.4097 0.75 20.63ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 235.46ns 270.507 0.87 1615.30ns
sending of values from observable via buffer to subscriber 5.62ns 7.55943 0.74 24.16ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 249.60ns 284.766 0.88 443.49ns
long stateful chain creation + subscribe 354.04ns 398.929 0.89 706.04ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 684.12ns 884.037 0.77 758.92ns
sending of values from observable via combine_latest to subscriber 15.95ns 21.3583 0.75 2.07ns

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 1528.01ns 1904.89 0.80 2878.62ns
concat_with 1783.26ns 2076.59 0.86 3166.24ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 112.36ns 128.863 0.87 227.13ns
sending of values from observable via distinct_until_changed to subscriber 2.01ns 2.5762 0.78 1.18ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 126.70ns 148.79 0.85 512.81ns
sending of values from observable via first to subscriber 0.59ns 0.486622 1.22 0.59ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 71.94ns 93.5784 0.77 544.88ns
error 119.30ns 134.808 0.88 659.21ns
never 40.58ns 47.7103 0.85 219.85ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 82.08ns 108.015 0.76 570.89ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 1.18ns 0.583561 2.03 96.42ns
re-schedule 10 times 9.68ns 10.2725 0.94 129.84ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 76.62ns 98.4355 0.78 552.69ns
just send variadic 103.23ns 125.799 0.82 654.52ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 167.15ns None . 300.44ns
sending of values from observable via last to subscriber 2.38ns None . 1.41ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 77.38ns 93.364 0.83 219.91ns
sending of values from observable via map to subscriber 0.81ns 1.13018 0.72 2.07ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 1452.33ns 1805.42 0.80 2888.92ns
merge_with 1660.51ns 1949.88 0.85 3155.69ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 495.45ns 641.741 0.77 2374.77ns
sending of values from observable via observe_on to subscriber 73.43ns 91.0424 0.81 172.01ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 20.80ns 25.3793 0.82 9.88ns
on_error 0.60ns 0.490708 1.22 17.12ns
on_completed 0.60ns 0.520424 1.15 0.58ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 168.15ns 200.164 0.84 158.44ns
get_observable 23.05ns 30.5724 0.75 55.18ns
get_subscriber 51.95ns 69.2611 0.75 11.54ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 3502.02ns 3906.74 0.90 2713.92ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 111.56ns 183.491 0.61 264.68ns
sending of values from observable via scan to subscriber 1.79ns 2.58534 0.69 2.07ns

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 106.41ns 128.149 0.83 411.89ns
sending of values from observable via skip to subscriber 1.77ns 1.94734 0.91 1.76ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 1879.01ns 2469.39 0.76 2441.24ns
sending of values from observable via switch_on_next to subscriber 476.16ns 604.832 0.79 560.58ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 163.87ns 209.677 0.78 434.60ns
sending of values from observable via take to subscriber 2.08ns 3.26794 0.64 2.33ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 197.56ns 282.851 0.70 462.25ns
sending of values from observable via take_last to subscriber 2.58ns 3.33278 0.77 3.07ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 839.46ns 1203.97 0.70 1047.28ns
sending of values from observable via take_until to subscriber 15.65ns 22.8515 0.68 1.58ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 12.42ns 11.0589 1.12 142.62ns
re-schedule 10 times 30.39ns 31.808 0.96 170.84ns
recursively schedule 10 times 1249.74ns 1487.64 0.84 4877.87ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 1775.81ns 2494.4 0.71 2815.02ns
sending of values from observable via window to subscriber 483.43ns 564.543 0.86 323.24ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 853.04ns 949.662 0.90 1025.27ns
sending of values from observable via with_latest_from to subscriber 30.81ns 35.3627 0.87 2.66ns

ci-ubuntu-gcc

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 0.34ns 0.335934 1.00 0.33ns
Dynamic observable construction 31.44ns 31.4986 1.00 22.78ns
Specific observable construction + as_dynamic 31.49ns 31.5833 1.00 23.32ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 118.61ns 119.014 1.00 333.54ns
Specific observable lift dynamic observer 145.82ns 144.94 1.01 347.38ns
Dynamic observable lift specific observer 198.25ns 199.558 0.99 403.89ns
Dynamic observable lift dynamic observer 211.83ns 207.748 1.02 364.83ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 83.05ns 83.4765 0.99 324.35ns
Specific observable subscribe dynamic observer 95.38ns 95.3867 1.00 329.18ns
Dynamic observable subscribe specific observer 149.57ns 147.998 1.01 363.60ns
Dynamic observable subscribe dynamic observer 148.10ns 146.116 1.01 354.74ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 83.49ns 83.4752 1.00 327.15ns
Dynamic observable subscribe lambda 150.29ns 150.308 1.00 382.63ns
Specific observable subscribe lambda without subscription 83.67ns 85.5131 0.98 323.60ns
Dynamic observable subscribe lambda without subscription 150.61ns 148.983 1.01 369.54ns
Specific observable subscribe specific subscriber 50.27ns 50.794 0.99 270.91ns
Dynamic observable subscribe specific subscriber 117.41ns 117.885 1.00 312.69ns
Specific observable subscribe dynamic observer 49.97ns 49.8905 1.00 274.42ns
Dynamic observable subscribe dynamic observer 105.14ns 102.557 1.03 300.88ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.34ns 0.335034 1.00 0.33ns
Dynamic observer construction 31.57ns 31.4737 1.00 20.87ns
Specific observer construction + as_dynamic 31.53ns 31.4875 1.00 20.34ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.34ns 0.335289 1.00 0.33ns
Dynamic observer OnNext 2.01ns 1.67423 1.20 2.01ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 34.44ns 34.5906 1.00 62.43ns
Make copy of subscriber 16.71ns 16.774 1.00 4.50ns
Transform subsriber to dynamic 44.53ns 44.3447 1.00 25.41ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 34.49ns 34.4967 1.00 55.82ns
composite_subscription add 48.64ns 47.3613 1.03 98.89ns
composite_subscription unsubscribe 41.98ns 41.5508 1.01 22.02ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 255.21ns 252.493 1.01 1902.96ns
sending of values from observable via buffer to subscriber 6.69ns 6.84533 0.98 30.60ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 308.02ns 300.238 1.03 689.68ns
long stateful chain creation + subscribe 435.70ns 436.847 1.00 1071.85ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 821.26ns 811.896 1.01 1114.60ns
sending of values from observable via combine_latest to subscriber 18.39ns 18.097 1.02 2.34ns

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 1778.02ns 1788.42 0.99 3594.49ns
concat_with 2043.76ns 2043.68 1.00 4048.30ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 137.02ns 147.063 0.93 351.66ns
sending of values from observable via distinct_until_changed to subscriber 4.18ns 3.99769 1.05 1.34ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 161.73ns 158.565 1.02 699.64ns
sending of values from observable via first to subscriber 0.67ns 0.670827 1.00 1.01ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 87.14ns 87.1401 1.00 733.84ns
error 135.52ns 131.673 1.03 838.76ns
never 49.56ns 49.4702 1.00 284.03ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 105.76ns 106.529 0.99 763.50ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 1.68ns 1.67463 1.00 130.68ns
re-schedule 10 times 22.77ns 22.8072 1.00 163.44ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 90.25ns 90.2746 1.00 764.19ns
just send variadic 128.03ns 131.352 0.97 818.90ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 198.78ns None . 429.38ns
sending of values from observable via last to subscriber 2.10ns None . 1.34ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 100.73ns 101.28 0.99 337.79ns
sending of values from observable via map to subscriber 0.98ns 0.974787 1.00 2.35ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 1695.46ns 1684.98 1.01 4025.42ns
merge_with 1961.59ns 1965.67 1.00 4021.17ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 612.16ns 604.141 1.01 2824.12ns
sending of values from observable via observe_on to subscriber 90.58ns 90.0608 1.01 238.23ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 22.42ns 22.7697 0.98 9.97ns
on_error 0.67ns 0.674579 1.00 16.83ns
on_completed 1.35ns 0.673132 2.00 1.01ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 211.38ns 213.933 0.99 173.76ns
get_observable 29.46ns 29.405 1.00 48.12ns
get_subscriber 57.45ns 57.3943 1.00 23.15ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 4116.18ns 4103.21 1.00 3158.54ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 139.86ns 135.215 1.03 386.45ns
sending of values from observable via scan to subscriber 3.35ns 3.68591 0.91 1.68ns

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 134.03ns 133.77 1.00 539.09ns
sending of values from observable via skip to subscriber 2.68ns 2.68409 1.00 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 2174.24ns 2175.4 1.00 4311.77ns
sending of values from observable via switch_on_next to subscriber 559.84ns 552.752 1.01 1094.94ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 191.47ns 192.07 1.00 585.18ns
sending of values from observable via take to subscriber 4.33ns 4.87527 0.89 4.07ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 231.23ns 230.811 1.00 631.92ns
sending of values from observable via take_last to subscriber 3.08ns 3.3792 0.91 5.96ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 977.49ns 978.509 1.00 1645.55ns
sending of values from observable via take_until to subscriber 17.75ns 17.7145 1.00 1.79ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 21.59ns 21.3862 1.01 183.69ns
re-schedule 10 times 49.40ns 48.6206 1.02 214.18ns
recursively schedule 10 times 1421.11ns 1475.51 0.96 6498.48ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 2129.69ns 2153.83 0.99 3228.94ns
sending of values from observable via window to subscriber 582.74ns 586.032 0.99 416.41ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 1005.47ns 1004.33 1.00 1368.90ns
sending of values from observable via with_latest_from to subscriber 35.13ns 35.1011 1.00 4.02ns

ci-windows

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 1.81ns 1.50384 1.20 0.95ns
Dynamic observable construction 95.78ns 79.5692 1.20 152.73ns
Specific observable construction + as_dynamic 96.65ns 79.7905 1.21 151.03ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 207.25ns 174.738 1.19 1531.23ns
Specific observable lift dynamic observer 243.78ns 203.089 1.20 1535.19ns
Dynamic observable lift specific observer 362.70ns 301.429 1.20 1924.32ns
Dynamic observable lift dynamic observer 327.06ns 262.26 1.25 1610.10ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 164.32ns 138.519 1.19 1602.59ns
Specific observable subscribe dynamic observer 188.68ns 152.566 1.24 1456.00ns
Dynamic observable subscribe specific observer 311.50ns 256.99 1.21 1606.75ns
Dynamic observable subscribe dynamic observer 261.93ns 202.048 1.30 1499.71ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 169.76ns 138.706 1.22 1441.29ns
Dynamic observable subscribe lambda 341.49ns 256.556 1.33 1632.37ns
Specific observable subscribe lambda without subscription 165.60ns 140.071 1.18 1405.00ns
Dynamic observable subscribe lambda without subscription 327.02ns 257.592 1.27 1623.45ns
Specific observable subscribe specific subscriber 59.00ns 49.1641 1.20 1029.00ns
Dynamic observable subscribe specific subscriber 202.71ns 164.351 1.23 1245.19ns
Specific observable subscribe dynamic observer 63.63ns 58.3069 1.09 1072.28ns
Dynamic observable subscribe dynamic observer 121.35ns 101.094 1.20 1090.75ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 1.81ns 1.50375 1.21 1.80ns
Dynamic observer construction 109.71ns 81.6839 1.34 136.06ns
Specific observer construction + as_dynamic 98.14ns 81.6503 1.20 137.08ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.85ns 0.669908 1.27 0.82ns
Dynamic observer OnNext 2.43ns 1.67437 1.45 2.48ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 102.76ns 85.0067 1.21 425.03ns
Make copy of subscriber 21.17ns 16.7129 1.27 40.36ns
Transform subsriber to dynamic 118.98ns 95.9809 1.24 180.81ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 101.65ns 84.5733 1.20 408.69ns
composite_subscription add 85.32ns 72.1739 1.18 197.49ns
composite_subscription unsubscribe 79.21ns 63.1571 1.25 149.18ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 456.61ns 384.492 1.19 5315.17ns
sending of values from observable via buffer to subscriber 7.75ns 6.75956 1.15 109.87ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 405.52ns 302.114 1.34 2108.93ns
long stateful chain creation + subscribe 843.03ns 688.857 1.22 3858.62ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 2168.44ns 1517.59 1.43 4455.75ns
sending of values from observable via combine_latest to subscriber 43.97ns 36.1648 1.22 4.66ns

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 3143.00ns 2627.0 1.20 12922.30ns
concat_with 3849.00ns 3262.88 1.18 14029.30ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 370.23ns 231.047 1.60 1240.60ns
sending of values from observable via distinct_until_changed to subscriber 4.02ns 3.67913 1.09 4.39ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 175.96ns 146.345 1.20 3135.50ns
sending of values from observable via first to subscriber 2.93ns 2.74271 1.07 2.16ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 98.26ns 81.8468 1.20 2921.70ns
error 167.08ns 139.847 1.19 3117.18ns
never 65.76ns 50.9387 1.29 1062.42ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 188.79ns 161.908 1.17 2963.64ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 2.11ns 1.34157 1.57 487.19ns
re-schedule 10 times 117.35ns 101.167 1.16 526.47ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 175.96ns 88.7604 1.98 3087.70ns
just send variadic 152.71ns 128.627 1.19 3114.73ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 290.47ns None . 2145.33ns
sending of values from observable via last to subscriber 3.84ns None . 4.40ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 125.39ns 105.393 1.19 1259.70ns
sending of values from observable via map to subscriber 4.82ns 3.34479 1.44 8.89ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 2954.00ns 2486.1 1.19 13422.70ns
merge_with 4571.75ns 3591.33 1.27 13869.70ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 1049.03ns 832.3 1.26 6910.00ns
sending of values from observable via observe_on to subscriber 107.93ns 86.1463 1.25 964.66ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 23.92ns 19.7219 1.21 38.97ns
on_error 3.33ns 3.38052 0.98 22.61ns
on_completed 3.24ns 2.70064 1.20 0.87ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 445.74ns 355.361 1.25 726.82ns
get_observable 31.39ns 28.4189 1.10 198.98ns
get_subscriber 60.23ns 50.4135 1.19 111.34ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 7253.20ns 6100.2 1.19 13363.30ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 245.81ns 209.697 1.17 1491.82ns
sending of values from observable via scan to subscriber 8.04ns 5.37415 1.50 10.69ns

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 233.51ns 194.609 1.20 1920.87ns
sending of values from observable via skip to subscriber 4.04ns 4.64621 0.87 4.03ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 4831.29ns 3393.0 1.42 14258.70ns
sending of values from observable via switch_on_next to subscriber 984.03ns 826.625 1.19 3726.78ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 296.60ns 251.711 1.18 2567.83ns
sending of values from observable via take to subscriber 7.05ns 5.49489 1.28 7.44ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 412.82ns 351.348 1.17 2980.64ns
sending of values from observable via take_last to subscriber 5.13ns 4.26698 1.20 34.92ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 1854.94ns 1576.24 1.18 6253.80ns
sending of values from observable via take_until to subscriber 50.09ns 29.7245 1.69 5.81ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 24.42ns 20.5679 1.19 762.81ns
re-schedule 10 times 148.71ns 136.102 1.09 865.93ns
recursively schedule 10 times 3161.70ns 2691.78 1.17 22858.50ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 3757.78ns 2963.56 1.27 20321.00ns
sending of values from observable via window to subscriber 1038.84ns 842.207 1.23 1942.31ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 2352.67ns 1922.75 1.22 4573.17ns
sending of values from observable via with_latest_from to subscriber 70.51ns 55.4177 1.27 8.26ns

github-actions[bot] avatar Sep 09 '22 20:09 github-actions[bot]