Skip to content

Trampoline scheduler as default#314

Merged
AlexInLog merged 2 commits into
mainfrom
trampoline_as_default
Dec 12, 2022
Merged

Trampoline scheduler as default#314
AlexInLog merged 2 commits into
mainfrom
trampoline_as_default

Conversation

@AlexInLog

Copy link
Copy Markdown
Owner

No description provided.

@AlexInLog AlexInLog marked this pull request as ready for review December 12, 2022 20:32
@codecov

codecov Bot commented Dec 12, 2022

Copy link
Copy Markdown

Codecov Report

Merging #314 (1bcac13) into main (8636af1) will decrease coverage by 0.05%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main     #314      +/-   ##
==========================================
- Coverage   97.87%   97.81%   -0.06%     
==========================================
  Files         112      112              
  Lines        1694     1694              
==========================================
- Hits         1658     1657       -1     
- Misses         36       37       +1     
Impacted Files Coverage Δ
src/rpp/rpp/sources/interval.hpp 100.00% <ø> (ø)
src/rpp/rpp/operators/concat.hpp 97.36% <100.00%> (-2.64%) ⬇️
src/rpp/rpp/operators/merge.hpp 100.00% <100.00%> (ø)
src/rpp/rpp/sources/from.hpp 100.00% <100.00%> (ø)

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

@AlexInLog AlexInLog merged commit f972644 into main Dec 12, 2022
@AlexInLog AlexInLog deleted the trampoline_as_default branch December 12, 2022 20:59
@github-actions

Copy link
Copy Markdown
Contributor

BENCHMARK RESULTS (AUTOGENERATED)

ci-macos

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 0.29ns 0.311605 0.93 0.28ns
Dynamic observable construction 79.12ns 82.1764 0.96 115.93ns
Specific observable construction + as_dynamic 101.86ns 81.393 1.25 110.48ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 246.24ns 142.077 1.73 1129.61ns
Specific observable lift dynamic observer 191.13ns 154.334 1.24 1151.32ns
Dynamic observable lift specific observer 386.36ns 259.258 1.49 1306.53ns
Dynamic observable lift dynamic observer 230.97ns 218.936 1.05 1924.82ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 110.80ns 116.676 0.95 1353.77ns
Specific observable subscribe dynamic observer 124.53ns 124.615 1.00 1108.72ns
Dynamic observable subscribe specific observer 233.30ns 245.553 0.95 1210.50ns
Dynamic observable subscribe dynamic observer 163.13ns 166.117 0.98 1722.81ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 105.43ns 122.834 0.86 1066.95ns
Dynamic observable subscribe lambda 202.41ns 254.696 0.79 1261.85ns
Specific observable subscribe lambda without subscription 108.11ns 121.881 0.89 1077.27ns
Dynamic observable subscribe lambda without subscription 210.53ns 235.682 0.89 1252.28ns
Specific observable subscribe specific subscriber 31.39ns 32.9637 0.95 1156.41ns
Dynamic observable subscribe specific subscriber 250.14ns 133.067 1.88 1077.20ns
Specific observable subscribe dynamic observer 32.66ns 33.1499 0.99 847.42ns
Dynamic observable subscribe dynamic observer 75.63ns 82.4029 0.92 1036.34ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.31ns 0.29782 1.03 0.30ns
Dynamic observer construction 74.05ns 87.132 0.85 106.17ns
Specific observer construction + as_dynamic 109.43ns 75.4712 1.45 102.03ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.83ns 0.800624 1.04 0.83ns
Dynamic observer OnNext 2.50ns 2.24425 1.11 2.62ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 78.95ns 76.1639 1.04 313.46ns
Make copy of subscriber 12.37ns 12.7871 0.97 28.03ns
Transform subsriber to dynamic 144.74ns 91.0104 1.59 215.37ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 80.26ns 73.8893 1.09 294.34ns
composite_subscription add 169.98ns 56.0627 3.03 152.95ns
composite_subscription unsubscribe 83.06ns 82.9437 1.00 81.08ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 1371.90ns 334.787 4.10 3583.88ns
sending of values from observable via buffer to subscriber 6.00ns 5.66012 1.06 95.06ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 319.50ns 219.692 1.45 1496.84ns
long stateful chain creation + subscribe 518.33ns 561.567 0.92 2889.47ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 1705.58ns 1377.0 1.24 .
sending of values from observable via combine_latest to subscriber 23.25ns 30.8714 0.75 .

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 4454.17ns 2403.14 1.85 9207.92ns
concat_with 5244.74ns 5380.2 0.97 11315.40ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 179.66ns 155.04 1.16 937.71ns
sending of values from observable via distinct_until_changed to subscriber 3.10ns 2.31317 1.34 1.34ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 121.97ns 122.611 0.99 2194.92ns
sending of values from observable via first to subscriber 0.90ns 0.863013 1.04 0.93ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 77.70ns 65.5853 1.18 3078.32ns
error 110.11ns 113.562 0.97 4139.08ns
never 33.35ns 32.4464 1.03 845.16ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 690.25ns 146.147 4.72 2504.84ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 2.35ns 2.02692 1.16 397.17ns
re-schedule 10 times 26.06ns 25.9619 1.00 464.22ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 481.88ns 66.836 7.21 5430.48ns
just send variadic 2200.68ns 94.6206 23.26 2460.96ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 211.94ns 210.744 1.01 1255.36ns
sending of values from observable via last to subscriber 2.51ns 2.5897 0.97 1.48ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 66.13ns 67.4238 0.98 908.73ns
sending of values from observable via map to subscriber 1.33ns 1.14822 1.16 2.13ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 4118.04ns 2956.12 1.39 9716.41ns
merge_with 4261.93ns 3177.91 1.34 11050.90ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 1226.28ns 1246.65 0.98 10871.40ns
sending of values from observable via observe_on to subscriber 244.30ns 212.881 1.15 809.85ns

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 590.88ns 621.838 0.95 1503.53ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 24.10ns 21.5092 1.12 29.79ns
on_error 0.77ns 0.600734 1.29 18.23ns
on_completed 0.56ns 0.571248 0.98 2.36ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 381.96ns 375.897 1.02 624.97ns
get_observable 26.63ns 27.4273 0.97 163.71ns
get_subscriber 54.12ns 52.1506 1.04 77.86ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 5819.47ns 5801.16 1.00 10544.50ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 151.50ns 144.749 1.05 1201.10ns
sending of values from observable via scan to subscriber 2.34ns 2.88165 0.81 1.98ns

single-threaded locks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no-lock increment 2.42ns 1.89351 1.28 .
mutex lock increment 22.98ns 24.9828 0.92 .
spin-lock increment 8.26ns 8.36439 0.99 .

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 139.62ns 146.093 0.96 1452.10ns
sending of values from observable via skip to subscriber 2.21ns 2.28699 0.97 2.02ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 5239.27ns 3240.56 1.62 10387.60ns
sending of values from observable via switch_on_next to subscriber 1477.61ns 821.77 1.80 2514.95ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 199.78ns 192.735 1.04 2029.99ns
sending of values from observable via take to subscriber 3.00ns 2.84139 1.06 5.89ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 293.54ns 297.385 0.99 2103.67ns
sending of values from observable via take_last to subscriber 2.69ns 2.88416 0.93 6.39ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 2296.16ns 1555.94 1.48 5100.67ns
sending of values from observable via take_until to subscriber 9.42ns 8.25358 1.14 3.67ns

timeout

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
timeout construction from observable via dot + subscribe with run_loop 6935.20ns 6485.53 1.07 4440.85ns
sending of values from observable via timeout to subscriber with unreachable timeout interval with run_loop 70.06ns 68.9632 1.02 1016.90ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 29.98ns 44.903 0.67 579.52ns
re-schedule 10 times 88.26ns 104.318 0.85 640.78ns
recursively schedule 10 times 2193.47ns 2227.54 0.98 17551.00ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 4300.07ns 2971.35 1.45 8167.83ns
sending of values from observable via window to subscriber 1511.39ns 897.353 1.68 1526.18ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 1611.60ns 1733.6 0.93 .
sending of values from observable via with_latest_from to subscriber 24.48ns 28.4467 0.86 .

ci-ubuntu-clang

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 0.36ns 0.334636 1.09 0.34ns
Dynamic observable construction 22.91ns 18.2367 1.26 39.19ns
Specific observable construction + as_dynamic 18.26ns 17.7525 1.03 31.99ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 64.52ns 50.2069 1.29 445.03ns
Specific observable lift dynamic observer 54.16ns 51.0919 1.06 449.57ns
Dynamic observable lift specific observer 95.93ns 84.4654 1.14 494.45ns
Dynamic observable lift dynamic observer 74.09ns 74.9458 0.99 442.81ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 39.58ns 36.5498 1.08 421.36ns
Specific observable subscribe dynamic observer 45.18ns 37.2556 1.21 396.11ns
Dynamic observable subscribe specific observer 81.48ns 70.1519 1.16 631.93ns
Dynamic observable subscribe dynamic observer 65.46ns 59.9764 1.09 434.11ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 35.16ns 36.6729 0.96 371.00ns
Dynamic observable subscribe lambda 68.73ns 65.3595 1.05 379.48ns
Specific observable subscribe lambda without subscription 40.37ns 36.6025 1.10 345.85ns
Dynamic observable subscribe lambda without subscription 79.82ns 64.8895 1.23 365.20ns
Specific observable subscribe specific subscriber 12.01ns 13.7175 0.88 261.22ns
Dynamic observable subscribe specific subscriber 57.52ns 42.707 1.35 299.55ns
Specific observable subscribe dynamic observer 14.10ns 13.764 1.02 337.57ns
Dynamic observable subscribe dynamic observer 32.96ns 33.6679 0.98 316.13ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.36ns 0.335151 1.08 0.31ns
Dynamic observer construction 18.91ns 18.3526 1.03 24.58ns
Specific observer construction + as_dynamic 20.22ns 17.4766 1.16 22.73ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.77ns 0.671439 1.14 0.60ns
Dynamic observer OnNext 2.23ns 1.67553 1.33 4.18ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 23.45ns 19.7756 1.19 69.60ns
Make copy of subscriber 7.14ns 6.96909 1.02 9.00ns
Transform subsriber to dynamic 25.54ns 20.2212 1.26 36.74ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 20.65ns 19.4405 1.06 78.26ns
composite_subscription add 27.08ns 18.5165 1.46 84.95ns
composite_subscription unsubscribe 36.15ns 30.3949 1.19 34.32ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 781.03ns 152.445 5.12 1957.94ns
sending of values from observable via buffer to subscriber 7.34ns 6.70336 1.09 28.67ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 116.81ns 102.644 1.14 620.30ns
long stateful chain creation + subscribe 243.60ns 144.566 1.69 8152.59ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 525.63ns 456.895 1.15 .
sending of values from observable via combine_latest to subscriber 11.01ns 13.7577 0.80 .

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 1635.29ns 1050.19 1.56 4680.14ns
concat_with 1689.90ns 1181.55 1.43 4190.87ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 53.33ns 51.6518 1.03 389.96ns
sending of values from observable via distinct_until_changed to subscriber 2.67ns 2.007 1.33 1.52ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 63.46ns 62.1843 1.02 781.69ns
sending of values from observable via first to subscriber 0.72ns 1.00645 0.71 0.56ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 41.64ns 36.4053 1.14 861.50ns
error 90.71ns 81.1585 1.12 917.50ns
never 14.26ns 14.4641 0.99 336.92ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 290.17ns 48.0579 6.04 904.24ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 0.70ns 1.34086 0.52 129.65ns
re-schedule 10 times 9.40ns 7.72125 1.22 157.84ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 196.97ns 38.3536 5.14 827.50ns
just send variadic 1361.27ns 69.9577 19.46 907.47ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 83.90ns 87.8575 0.95 416.86ns
sending of values from observable via last to subscriber 2.77ns 2.02585 1.37 1.62ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 38.74ns 30.421 1.27 345.66ns
sending of values from observable via map to subscriber 1.60ns 1.33826 1.20 1.85ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 2549.69ns 991.627 2.57 3810.64ns
merge_with 1741.88ns 1123.2 1.55 4973.27ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 588.57ns 562.714 1.05 3602.01ns
sending of values from observable via observe_on to subscriber 125.68ns 126.18 1.00 297.99ns

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 272.62ns 232.028 1.17 1917.69ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 21.68ns 19.179 1.13 26.72ns
on_error 0.70ns 0.6732 1.04 16.42ns
on_completed 0.77ns 0.672317 1.14 0.63ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 120.12ns 122.971 0.98 199.59ns
get_observable 9.42ns 7.90296 1.19 53.23ns
get_subscriber 21.34ns 19.6995 1.08 20.91ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 2357.16ns 2197.46 1.07 3679.68ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 44.99ns 46.3496 0.97 395.49ns
sending of values from observable via scan to subscriber 2.09ns 2.01373 1.04 2.07ns

single-threaded locks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no-lock increment 2.51ns 2.01137 1.25 .
mutex lock increment 7.23ns 8.02746 0.90 .
spin-lock increment 10.35ns 9.04064 1.15 .

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 53.96ns 45.7383 1.18 591.05ns
sending of values from observable via skip to subscriber 2.09ns 2.00984 1.04 2.15ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 2217.32ns 1202.93 1.84 4573.02ns
sending of values from observable via switch_on_next to subscriber 8443.35ns 305.812 27.61 1003.40ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 85.94ns 81.8106 1.05 700.98ns
sending of values from observable via take to subscriber 2.86ns 2.34634 1.22 2.69ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 207.52ns 113.344 1.83 874.60ns
sending of values from observable via take_last to subscriber 2.89ns 2.39628 1.21 4.93ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 1069.54ns 582.489 1.84 1775.56ns
sending of values from observable via take_until to subscriber 12.25ns 8.70754 1.41 2.24ns

timeout

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
timeout construction from observable via dot + subscribe with run_loop 733.36ns 796.579 0.92 21372.30ns
sending of values from observable via timeout to subscriber with unreachable timeout interval with run_loop 43.06ns 41.3811 1.04 24567.70ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 8.86ns 8.75345 1.01 221.01ns
re-schedule 10 times 24.46ns 28.1229 0.87 247.09ns
recursively schedule 10 times 1965.11ns 1408.92 1.39 11417.80ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 1981.70ns 997.414 1.99 4326.64ns
sending of values from observable via window to subscriber 307.29ns 264.703 1.16 517.00ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 559.78ns 529.833 1.06 .
sending of values from observable via with_latest_from to subscriber 7.44ns 14.7397 0.50 .

ci-ubuntu-gcc

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 0.40ns 0.380729 1.06 0.40ns
Dynamic observable construction 29.18ns 34.2676 0.85 52.96ns
Specific observable construction + as_dynamic 28.88ns 39.0644 0.74 53.10ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 96.14ns 116.034 0.83 771.99ns
Specific observable lift dynamic observer 130.48ns 151.437 0.86 819.76ns
Dynamic observable lift specific observer 191.47ns 216.848 0.88 900.23ns
Dynamic observable lift dynamic observer 208.55ns 210.156 0.99 833.93ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 61.03ns 72.6679 0.84 739.12ns
Specific observable subscribe dynamic observer 76.90ns 86.3831 0.89 747.12ns
Dynamic observable subscribe specific observer 130.17ns 146.356 0.89 831.16ns
Dynamic observable subscribe dynamic observer 132.65ns 153.533 0.86 756.34ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 59.72ns 74.2369 0.80 749.59ns
Dynamic observable subscribe lambda 130.58ns 147.813 0.88 816.97ns
Specific observable subscribe lambda without subscription 59.28ns 81.1109 0.73 731.41ns
Dynamic observable subscribe lambda without subscription 130.60ns 146.029 0.89 822.86ns
Specific observable subscribe specific subscriber 27.07ns 36.6168 0.74 632.40ns
Dynamic observable subscribe specific subscriber 96.89ns 110.512 0.88 719.28ns
Specific observable subscribe dynamic observer 27.73ns 36.6489 0.76 654.04ns
Dynamic observable subscribe dynamic observer 91.25ns 89.4963 1.02 658.35ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.40ns 0.383883 1.05 0.40ns
Dynamic observer construction 28.89ns 37.7236 0.77 45.08ns
Specific observer construction + as_dynamic 30.12ns 38.1411 0.79 47.92ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.42ns 0.401562 1.05 0.42ns
Dynamic observer OnNext 1.61ns 1.95916 0.82 1.61ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 33.99ns 42.8254 0.79 134.14ns
Make copy of subscriber 16.10ns 20.0983 0.80 30.99ns
Transform subsriber to dynamic 45.72ns 57.2729 0.80 77.31ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 33.84ns 42.1622 0.80 125.33ns
composite_subscription add 51.46ns 57.5218 0.89 125.62ns
composite_subscription unsubscribe 44.38ns 50.8228 0.87 38.66ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 978.09ns 253.075 3.86 2953.52ns
sending of values from observable via buffer to subscriber 6.63ns 7.48186 0.89 29.69ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 325.35ns 344.013 0.95 1419.56ns
long stateful chain creation + subscribe 458.63ns 514.279 0.89 4225.63ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 841.40ns 1017.37 0.83 .
sending of values from observable via combine_latest to subscriber 8.04ns 18.6163 0.43 .

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 3079.97ns 2160.78 1.43 8151.91ns
concat_with 2868.98ns 2507.59 1.14 8606.41ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 120.00ns 144.026 0.83 775.81ns
sending of values from observable via distinct_until_changed to subscriber 3.21ns 3.02767 1.06 1.61ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 146.67ns 153.665 0.95 1769.51ns
sending of values from observable via first to subscriber 1.21ns 1.0359 1.17 0.81ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 67.47ns 81.4573 0.83 1826.38ns
error 116.23ns 134.797 0.86 1862.59ns
never 28.82ns 38.6246 0.75 654.21ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 326.61ns 104.664 3.12 1836.57ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 1.18ns 1.54661 0.76 301.04ns
re-schedule 10 times 19.96ns 26.8786 0.74 334.42ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 300.43ns 85.0103 3.53 1843.98ns
just send variadic 1452.75ns 134.599 10.79 1885.42ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 179.85ns 208.157 0.86 1057.95ns
sending of values from observable via last to subscriber 1.68ns 2.04516 0.82 1.42ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 82.74ns 97.4119 0.85 803.29ns
sending of values from observable via map to subscriber 0.80ns 1.57025 0.51 1.60ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 3056.47ns 2101.57 1.45 9651.90ns
merge_with 2851.79ns 2635.8 1.08 9695.90ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 815.24ns 971.893 0.84 3376.63ns
sending of values from observable via observe_on to subscriber 157.03ns 186.632 0.84 530.53ns

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 460.00ns 476.504 0.97 1602.72ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 29.67ns 24.3165 1.22 13.74ns
on_error 1.22ns 1.15298 1.05 16.23ns
on_completed 0.81ns 1.61597 0.50 0.81ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 213.33ns 250.973 0.85 385.76ns
get_observable 33.38ns 34.3532 0.97 99.35ns
get_subscriber 63.66ns 66.6444 0.96 98.12ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 4343.53ns 4917.9 0.88 7590.17ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 114.52ns 129.829 0.88 939.30ns
sending of values from observable via scan to subscriber 2.01ns 2.40799 0.83 1.60ns

single-threaded locks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no-lock increment 2.33ns 2.15514 1.08 .
mutex lock increment 6.84ns 8.63678 0.79 .
spin-lock increment 11.20ns 10.4086 1.08 .

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 114.40ns 133.806 0.85 1165.32ns
sending of values from observable via skip to subscriber 3.17ns 2.72343 1.16 2.80ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 3283.19ns 2802.46 1.17 11319.60ns
sending of values from observable via switch_on_next to subscriber 829.11ns 721.291 1.15 3199.77ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 172.60ns 187.461 0.92 1491.03ns
sending of values from observable via take to subscriber 4.06ns 3.69793 1.10 3.05ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 214.06ns 232.46 0.92 1456.46ns
sending of values from observable via take_last to subscriber 3.24ns 3.67292 0.88 6.33ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 1652.60ns 1252.73 1.32 3720.09ns
sending of values from observable via take_until to subscriber 10.42ns 9.89507 1.05 2.10ns

timeout

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
timeout construction from observable via dot + subscribe with run_loop 1121.99ns 1244.8 0.90 11958.30ns
sending of values from observable via timeout to subscriber with unreachable timeout interval with run_loop 65.01ns 66.0024 0.98 2586.36ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 21.03ns 21.5207 0.98 381.14ns
re-schedule 10 times 43.13ns 55.8393 0.77 414.95ns
recursively schedule 10 times 1463.99ns 1641.18 0.89 21879.60ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 2874.52ns 2113.08 1.36 6243.54ns
sending of values from observable via window to subscriber 561.22ns 615.09 0.91 991.63ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 1055.43ns 1230.25 0.86 .
sending of values from observable via with_latest_from to subscriber 8.44ns 18.0748 0.47 .

ci-windows

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 2.00ns 1.88337 1.06 0.41ns
Dynamic observable construction 72.05ns 58.4887 1.23 113.97ns
Specific observable construction + as_dynamic 73.02ns 65.8542 1.11 115.00ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 135.57ns 82.0105 1.65 1178.23ns
Specific observable lift dynamic observer 171.34ns 91.5752 1.87 1291.24ns
Dynamic observable lift specific observer 267.62ns 150.638 1.78 1376.00ns
Dynamic observable lift dynamic observer 234.48ns 108.727 2.16 1276.10ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 98.62ns 76.2113 1.29 1133.05ns
Specific observable subscribe dynamic observer 117.77ns 75.1388 1.57 1168.50ns
Dynamic observable subscribe specific observer 206.23ns 144.482 1.43 1298.26ns
Dynamic observable subscribe dynamic observer 170.97ns 86.442 1.98 1198.43ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 107.22ns 72.3356 1.48 1145.50ns
Dynamic observable subscribe lambda 216.76ns 138.498 1.57 1291.80ns
Specific observable subscribe lambda without subscription 106.81ns 72.8543 1.47 1139.05ns
Dynamic observable subscribe lambda without subscription 218.89ns 133.866 1.64 1311.21ns
Specific observable subscribe specific subscriber 26.50ns 17.129 1.55 846.83ns
Dynamic observable subscribe specific subscriber 132.64ns 83.3718 1.59 1011.92ns
Specific observable subscribe dynamic observer 26.47ns 17.5144 1.51 894.83ns
Dynamic observable subscribe dynamic observer 80.32ns 30.4692 2.64 916.07ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 2.00ns 1.86319 1.08 2.00ns
Dynamic observer construction 73.24ns 56.5302 1.30 106.73ns
Specific observer construction + as_dynamic 72.48ns 56.5885 1.28 107.56ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.42ns 0.624338 0.68 0.80ns
Dynamic observer OnNext 1.63ns 2.11288 0.77 1.61ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 71.90ns 56.1678 1.28 323.43ns
Make copy of subscriber 16.04ns 4.95854 3.24 34.12ns
Transform subsriber to dynamic 88.62ns 62.9044 1.41 144.22ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 72.98ns 56.4039 1.29 318.99ns
composite_subscription add 71.16ns 34.9534 2.04 171.42ns
composite_subscription unsubscribe 63.66ns 32.1423 1.98 113.34ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 1032.21ns 213.512 4.83 4353.33ns
sending of values from observable via buffer to subscriber 6.85ns 6.59706 1.04 88.11ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 296.36ns 95.7731 3.09 1719.27ns
long stateful chain creation + subscribe 654.40ns 358.443 1.83 3255.00ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 1568.73ns 943.903 1.66 .
sending of values from observable via combine_latest to subscriber 36.87ns 24.0291 1.53 .

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 4025.14ns 1467.73 2.74 10507.70ns
concat_with 4794.67ns 1810.06 2.65 11590.00ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 176.55ns 110.894 1.59 1024.12ns
sending of values from observable via distinct_until_changed to subscriber 3.21ns 3.62229 0.89 3.62ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 139.46ns 47.2058 2.95 2632.80ns
sending of values from observable via first to subscriber 2.48ns 2.86886 0.86 1.24ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 63.93ns 25.9671 2.46 2453.64ns
error 122.95ns 40.4171 3.04 2507.90ns
never 28.22ns 15.8661 1.78 877.74ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 512.72ns 89.385 5.74 2428.00ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 1.41ns 1.30017 1.08 405.37ns
re-schedule 10 times 130.25ns 126.603 1.03 441.96ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 373.55ns 29.2371 12.78 2363.09ns
just send variadic 1276.84ns 60.4361 21.13 2449.90ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 218.75ns 107.706 2.03 1432.53ns
sending of values from observable via last to subscriber 3.10ns 3.0476 1.02 3.34ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 96.36ns 36.0294 2.67 989.54ns
sending of values from observable via map to subscriber 3.57ns 3.20253 1.11 7.12ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 4963.14ns 1374.35 3.61 11087.70ns
merge_with 4669.00ns 1727.78 2.70 11629.70ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 1176.50ns 825.054 1.43 5559.80ns
sending of values from observable via observe_on to subscriber 196.59ns 143.704 1.37 827.42ns

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 621.54ns 546.976 1.14 1881.46ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 22.38ns 7.12879 3.14 28.42ns
on_error 2.46ns 2.9916 0.82 19.32ns
on_completed 2.96ns 2.21855 1.33 0.82ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 328.92ns 191.444 1.72 610.97ns
get_observable 31.41ns 10.4689 3.00 154.11ns
get_subscriber 61.50ns 19.6921 3.12 100.58ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 5934.20ns 3041.1 1.95 11184.70ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 170.34ns 103.209 1.65 1260.45ns
sending of values from observable via scan to subscriber 5.34ns 4.88999 1.09 8.30ns

single-threaded locks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no-lock increment 3.19ns 1.0741 2.97 .
mutex lock increment 24.26ns 16.3868 1.48 .
spin-lock increment 10.43ns 4.07521 2.56 .

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 169.12ns 104.513 1.62 1543.33ns
sending of values from observable via skip to subscriber 3.23ns 3.49532 0.92 3.45ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 4629.50ns 1725.59 2.68 11977.50ns
sending of values from observable via switch_on_next to subscriber 1137.48ns 408.395 2.79 3031.89ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 225.80ns 114.656 1.97 2137.58ns
sending of values from observable via take to subscriber 6.16ns 5.39572 1.14 5.70ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 306.57ns 171.357 1.79 2404.45ns
sending of values from observable via take_last to subscriber 4.05ns 3.8321 1.06 19.67ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 2249.64ns 835.559 2.69 5151.60ns
sending of values from observable via take_until to subscriber 12.19ns 5.90668 2.06 5.22ns

timeout

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
timeout construction from observable via dot + subscribe with run_loop 1625.08ns 970.786 1.67 5504.50ns
sending of values from observable via timeout to subscriber with unreachable timeout interval with run_loop 57.60ns 33.4953 1.72 1388.44ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 19.49ns 18.5173 1.05 587.98ns
re-schedule 10 times 145.61ns 162.937 0.89 626.77ns
recursively schedule 10 times 2681.00ns 1949.89 1.37 19346.50ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 3686.14ns 1529.65 2.41 9463.33ns
sending of values from observable via window to subscriber 823.40ns 457.875 1.80 1587.56ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 1854.15ns 1088.56 1.70 .
sending of values from observable via with_latest_from to subscriber 26.03ns 23.8519 1.09 .

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