Skip to content

Use shared_ptr for buffer#311

Closed
AlexInLog wants to merge 3 commits into
mainfrom
shared_ptrs
Closed

Use shared_ptr for buffer#311
AlexInLog wants to merge 3 commits into
mainfrom
shared_ptrs

Conversation

@AlexInLog

Copy link
Copy Markdown
Owner

No description provided.

@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.28ns 0.311605 0.90 0.29ns
Dynamic observable construction 72.53ns 82.1764 0.88 105.00ns
Specific observable construction + as_dynamic 73.54ns 81.393 0.90 104.25ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 153.09ns 142.077 1.08 1136.99ns
Specific observable lift dynamic observer 157.62ns 154.334 1.02 1177.75ns
Dynamic observable lift specific observer 242.69ns 259.258 0.94 1228.24ns
Dynamic observable lift dynamic observer 213.07ns 218.936 0.97 1189.87ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 593.99ns 116.676 5.09 1123.06ns
Specific observable subscribe dynamic observer 144.90ns 124.615 1.16 1179.59ns
Dynamic observable subscribe specific observer 203.97ns 245.553 0.83 1265.97ns
Dynamic observable subscribe dynamic observer 163.25ns 166.117 0.98 1165.37ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 138.37ns 122.834 1.13 1090.60ns
Dynamic observable subscribe lambda 196.56ns 254.696 0.77 1217.36ns
Specific observable subscribe lambda without subscription 108.40ns 121.881 0.89 1235.68ns
Dynamic observable subscribe lambda without subscription 276.11ns 235.682 1.17 1276.47ns
Specific observable subscribe specific subscriber 29.75ns 32.9637 0.90 882.67ns
Dynamic observable subscribe specific subscriber 140.63ns 133.067 1.06 1028.34ns
Specific observable subscribe dynamic observer 61.17ns 33.1499 1.85 893.09ns
Dynamic observable subscribe dynamic observer 70.67ns 82.4029 0.86 918.57ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.28ns 0.29782 0.93 0.28ns
Dynamic observer construction 73.65ns 87.132 0.85 103.84ns
Specific observer construction + as_dynamic 67.39ns 75.4712 0.89 101.55ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.78ns 0.800624 0.97 0.80ns
Dynamic observer OnNext 2.19ns 2.24425 0.98 2.17ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 76.68ns 76.1639 1.01 302.31ns
Make copy of subscriber 12.38ns 12.7871 0.97 24.51ns
Transform subsriber to dynamic 82.76ns 91.0104 0.91 129.62ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 69.95ns 73.8893 0.95 294.73ns
composite_subscription add 57.74ns 56.0627 1.03 101.43ns
composite_subscription unsubscribe 74.70ns 82.9437 0.90 78.08ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 357.57ns 334.787 1.07 3226.68ns
sending of values from observable via buffer to subscriber 4.48ns 5.66012 0.79 89.80ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 215.66ns 219.692 0.98 1397.33ns
long stateful chain creation + subscribe 526.13ns 561.567 0.94 2746.78ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 1323.62ns 1377.0 0.96 .
sending of values from observable via combine_latest to subscriber 28.11ns 30.8714 0.91 .

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 2826.60ns 2403.14 1.18 9738.87ns
concat_with 3135.39ns 5380.2 0.58 12103.30ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 148.97ns 155.04 0.96 952.15ns
sending of values from observable via distinct_until_changed to subscriber 2.23ns 2.31317 0.96 1.16ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 120.20ns 122.611 0.98 2281.50ns
sending of values from observable via first to subscriber 0.84ns 0.863013 0.97 0.95ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 61.91ns 65.5853 0.94 2139.95ns
error 110.29ns 113.562 0.97 3318.35ns
never 32.09ns 32.4464 0.99 948.64ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 137.69ns 146.147 0.94 2321.62ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 2.07ns 2.02692 1.02 609.80ns
re-schedule 10 times 28.22ns 25.9619 1.09 448.99ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 64.94ns 66.836 0.97 2211.34ns
just send variadic 92.13ns 94.6206 0.97 2318.39ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 210.90ns 210.744 1.00 1271.17ns
sending of values from observable via last to subscriber 2.66ns 2.5897 1.03 1.32ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 65.29ns 67.4238 0.97 936.07ns
sending of values from observable via map to subscriber 1.12ns 1.14822 0.98 1.42ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 2580.58ns 2956.12 0.87 9342.20ns
merge_with 3162.82ns 3177.91 1.00 10727.40ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 1198.48ns 1246.65 0.96 11393.90ns
sending of values from observable via observe_on to subscriber 246.84ns 212.881 1.16 867.00ns

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 680.86ns 621.838 1.09 1502.20ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 20.62ns 21.5092 0.96 28.18ns
on_error 0.73ns 0.600734 1.21 17.87ns
on_completed 0.65ns 0.571248 1.13 2.30ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 315.68ns 375.897 0.84 551.67ns
get_observable 27.01ns 27.4273 0.98 160.33ns
get_subscriber 52.45ns 52.1506 1.01 78.59ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 6018.99ns 5801.16 1.04 10578.10ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 159.70ns 144.749 1.10 1151.82ns
sending of values from observable via scan to subscriber 2.25ns 2.88165 0.78 2.06ns

single-threaded locks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no-lock increment 1.95ns 1.89351 1.03 .
mutex lock increment 34.21ns 24.9828 1.37 .
spin-lock increment 8.44ns 8.36439 1.01 .

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 148.73ns 146.093 1.02 1386.17ns
sending of values from observable via skip to subscriber 2.24ns 2.28699 0.98 2.00ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 3479.93ns 3240.56 1.07 10384.40ns
sending of values from observable via switch_on_next to subscriber 818.65ns 821.77 1.00 2669.24ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 205.93ns 192.735 1.07 2701.13ns
sending of values from observable via take to subscriber 2.82ns 2.84139 0.99 6.64ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 287.75ns 297.385 0.97 2210.37ns
sending of values from observable via take_last to subscriber 2.90ns 2.88416 1.01 5.39ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 1757.59ns 1555.94 1.13 5968.26ns
sending of values from observable via take_until to subscriber 7.80ns 8.25358 0.95 2.37ns

timeout

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
timeout construction from observable via dot + subscribe with run_loop 6221.54ns 6485.53 0.96 4701.14ns
sending of values from observable via timeout to subscriber with unreachable timeout interval with run_loop 68.00ns 68.9632 0.99 931.38ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 48.41ns 44.903 1.08 583.94ns
re-schedule 10 times 88.96ns 104.318 0.85 643.39ns
recursively schedule 10 times 2102.64ns 2227.54 0.94 16284.40ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 2888.63ns 2971.35 0.97 9903.89ns
sending of values from observable via window to subscriber 824.88ns 897.353 0.92 1505.19ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 1717.76ns 1733.6 0.99 .
sending of values from observable via with_latest_from to subscriber 27.71ns 28.4467 0.97 .

ci-ubuntu-clang

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 0.34ns 0.334636 1.00 0.34ns
Dynamic observable construction 18.30ns 18.2367 1.00 30.48ns
Specific observable construction + as_dynamic 17.90ns 17.7525 1.01 30.36ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 50.27ns 50.2069 1.00 325.84ns
Specific observable lift dynamic observer 51.19ns 51.0919 1.00 344.49ns
Dynamic observable lift specific observer 84.69ns 84.4654 1.00 375.92ns
Dynamic observable lift dynamic observer 74.59ns 74.9458 1.00 358.88ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 36.56ns 36.5498 1.00 321.46ns
Specific observable subscribe dynamic observer 37.28ns 37.2556 1.00 338.56ns
Dynamic observable subscribe specific observer 70.63ns 70.1519 1.01 383.85ns
Dynamic observable subscribe dynamic observer 59.89ns 59.9764 1.00 350.70ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 36.58ns 36.6729 1.00 326.31ns
Dynamic observable subscribe lambda 67.81ns 65.3595 1.04 371.46ns
Specific observable subscribe lambda without subscription 36.54ns 36.6025 1.00 327.28ns
Dynamic observable subscribe lambda without subscription 64.70ns 64.8895 1.00 372.92ns
Specific observable subscribe specific subscriber 13.76ns 13.7175 1.00 256.89ns
Dynamic observable subscribe specific subscriber 42.89ns 42.707 1.00 297.76ns
Specific observable subscribe dynamic observer 13.75ns 13.764 1.00 268.94ns
Dynamic observable subscribe dynamic observer 33.53ns 33.6679 1.00 283.79ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.33ns 0.335151 1.00 0.34ns
Dynamic observer construction 18.06ns 18.3526 0.98 23.63ns
Specific observer construction + as_dynamic 18.66ns 17.4766 1.07 23.67ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.67ns 0.671439 1.00 0.67ns
Dynamic observer OnNext 1.67ns 1.67553 1.00 2.34ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 19.55ns 19.7756 0.99 67.69ns
Make copy of subscriber 6.99ns 6.96909 1.00 8.13ns
Transform subsriber to dynamic 20.28ns 20.2212 1.00 28.14ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 20.61ns 19.4405 1.06 60.55ns
composite_subscription add 17.98ns 18.5165 0.97 94.69ns
composite_subscription unsubscribe 30.13ns 30.3949 0.99 29.92ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 139.93ns 152.445 0.92 1834.15ns
sending of values from observable via buffer to subscriber 3.36ns 6.70336 0.50 25.77ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 102.04ns 102.644 0.99 615.90ns
long stateful chain creation + subscribe 144.66ns 144.566 1.00 1349.85ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 455.98ns 456.895 1.00 .
sending of values from observable via combine_latest to subscriber 13.84ns 13.7577 1.01 .

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 1076.64ns 1050.19 1.03 3555.61ns
concat_with 1232.17ns 1181.55 1.04 3897.06ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 51.48ns 51.6518 1.00 301.02ns
sending of values from observable via distinct_until_changed to subscriber 2.01ns 2.007 1.00 1.17ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 61.95ns 62.1843 1.00 696.85ns
sending of values from observable via first to subscriber 0.67ns 1.00645 0.67 1.01ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 36.16ns 36.4053 0.99 687.65ns
error 81.08ns 81.1585 1.00 776.55ns
never 14.44ns 14.4641 1.00 274.89ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 48.19ns 48.0579 1.00 711.68ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 0.99ns 1.34086 0.74 126.16ns
re-schedule 10 times 8.08ns 7.72125 1.05 157.30ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 38.43ns 38.3536 1.00 701.67ns
just send variadic 70.18ns 69.9577 1.00 763.94ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 87.98ns 87.8575 1.00 419.16ns
sending of values from observable via last to subscriber 2.02ns 2.02585 1.00 1.35ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 30.37ns 30.421 1.00 285.69ns
sending of values from observable via map to subscriber 1.34ns 1.33826 1.00 2.01ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 1032.18ns 991.627 1.04 3518.83ns
merge_with 1172.94ns 1123.2 1.04 4000.19ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 560.87ns 562.714 1.00 2832.50ns
sending of values from observable via observe_on to subscriber 125.78ns 126.18 1.00 240.48ns

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 233.34ns 232.028 1.01 772.48ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 19.08ns 19.179 0.99 14.80ns
on_error 1.01ns 0.6732 1.50 16.82ns
on_completed 1.01ns 0.672317 1.50 0.67ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 123.13ns 122.971 1.00 179.12ns
get_observable 7.90ns 7.90296 1.00 50.25ns
get_subscriber 19.69ns 19.6995 1.00 19.75ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 2202.53ns 2197.46 1.00 3294.35ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 46.07ns 46.3496 0.99 372.43ns
sending of values from observable via scan to subscriber 2.01ns 2.01373 1.00 2.35ns

single-threaded locks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no-lock increment 1.99ns 2.01137 0.99 .
mutex lock increment 8.20ns 8.02746 1.02 .
spin-lock increment 9.04ns 9.04064 1.00 .

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 45.47ns 45.7383 0.99 525.05ns
sending of values from observable via skip to subscriber 2.01ns 2.00984 1.00 1.79ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 1203.15ns 1202.93 1.00 3519.55ns
sending of values from observable via switch_on_next to subscriber 302.38ns 305.812 0.99 809.90ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 81.32ns 81.8106 0.99 571.47ns
sending of values from observable via take to subscriber 2.34ns 2.34634 1.00 2.69ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 112.60ns 113.344 0.99 615.19ns
sending of values from observable via take_last to subscriber 2.39ns 2.39628 1.00 4.12ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 600.51ns 582.489 1.03 1415.29ns
sending of values from observable via take_until to subscriber 8.70ns 8.70754 1.00 2.34ns

timeout

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
timeout construction from observable via dot + subscribe with run_loop 796.19ns 796.579 1.00 17279.70ns
sending of values from observable via timeout to subscriber with unreachable timeout interval with run_loop 41.49ns 41.3811 1.00 14403.00ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 8.37ns 8.75345 0.96 183.97ns
re-schedule 10 times 27.87ns 28.1229 0.99 218.30ns
recursively schedule 10 times 1392.38ns 1408.92 0.99 8085.51ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 998.68ns 997.414 1.00 3211.25ns
sending of values from observable via window to subscriber 264.63ns 264.703 1.00 413.64ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 539.14ns 529.833 1.02 .
sending of values from observable via with_latest_from to subscriber 14.72ns 14.7397 1.00 .

ci-ubuntu-gcc

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 0.34ns 0.380729 0.88 0.33ns
Dynamic observable construction 32.46ns 34.2676 0.95 51.94ns
Specific observable construction + as_dynamic 32.47ns 39.0644 0.83 51.89ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 98.80ns 116.034 0.85 729.20ns
Specific observable lift dynamic observer 127.55ns 151.437 0.84 782.19ns
Dynamic observable lift specific observer 183.38ns 216.848 0.85 838.15ns
Dynamic observable lift dynamic observer 195.15ns 210.156 0.93 819.04ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 61.84ns 72.6679 0.85 702.29ns
Specific observable subscribe dynamic observer 78.57ns 86.3831 0.91 743.79ns
Dynamic observable subscribe specific observer 149.84ns 146.356 1.02 800.22ns
Dynamic observable subscribe dynamic observer 128.36ns 153.533 0.84 751.36ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 61.85ns 74.2369 0.83 702.61ns
Dynamic observable subscribe lambda 132.77ns 147.813 0.90 788.14ns
Specific observable subscribe lambda without subscription 72.18ns 81.1109 0.89 701.63ns
Dynamic observable subscribe lambda without subscription 132.73ns 146.029 0.91 791.62ns
Specific observable subscribe specific subscriber 30.50ns 36.6168 0.83 605.15ns
Dynamic observable subscribe specific subscriber 99.28ns 110.512 0.90 694.35ns
Specific observable subscribe dynamic observer 30.47ns 36.6489 0.83 630.58ns
Dynamic observable subscribe dynamic observer 85.30ns 89.4963 0.95 638.69ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.33ns 0.383883 0.87 0.34ns
Dynamic observer construction 32.49ns 37.7236 0.86 45.25ns
Specific observer construction + as_dynamic 32.48ns 38.1411 0.85 47.48ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.34ns 0.401562 0.83 0.34ns
Dynamic observer OnNext 2.01ns 1.95916 1.02 2.01ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 35.53ns 42.8254 0.83 136.02ns
Make copy of subscriber 16.74ns 20.0983 0.83 31.81ns
Transform subsriber to dynamic 45.35ns 57.2729 0.79 78.29ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 35.51ns 42.1622 0.84 129.29ns
composite_subscription add 49.25ns 57.5218 0.86 118.20ns
composite_subscription unsubscribe 43.17ns 50.8228 0.85 38.44ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 227.19ns 253.075 0.90 3013.74ns
sending of values from observable via buffer to subscriber 5.37ns 7.48186 0.72 30.61ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 287.38ns 344.013 0.84 1367.44ns
long stateful chain creation + subscribe 426.75ns 514.279 0.83 4120.63ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 852.43ns 1017.37 0.84 .
sending of values from observable via combine_latest to subscriber 15.70ns 18.6163 0.84 .

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 1876.78ns 2160.78 0.87 7647.85ns
concat_with 2240.61ns 2507.59 0.89 8095.85ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 121.50ns 144.026 0.84 739.01ns
sending of values from observable via distinct_until_changed to subscriber 2.35ns 3.02767 0.78 1.34ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 137.28ns 153.665 0.89 1668.96ns
sending of values from observable via first to subscriber 1.34ns 1.0359 1.29 1.01ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 68.32ns 81.4573 0.84 1728.58ns
error 117.74ns 134.797 0.87 1744.14ns
never 32.39ns 38.6246 0.84 645.77ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 86.70ns 104.664 0.83 1757.20ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 1.34ns 1.54661 0.87 280.18ns
re-schedule 10 times 15.26ns 26.8786 0.57 308.82ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 70.89ns 85.0103 0.83 1743.79ns
just send variadic 109.78ns 134.599 0.82 1805.97ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 177.46ns 208.157 0.85 1003.94ns
sending of values from observable via last to subscriber 2.68ns 2.04516 1.31 1.34ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 82.02ns 97.4119 0.84 731.06ns
sending of values from observable via map to subscriber 1.34ns 1.57025 0.85 2.68ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 1847.74ns 2101.57 0.88 9146.86ns
merge_with 2188.32ns 2635.8 0.83 9032.11ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 821.04ns 971.893 0.84 3227.71ns
sending of values from observable via observe_on to subscriber 162.16ns 186.632 0.87 516.28ns

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 446.08ns 476.504 0.94 1520.11ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 22.42ns 24.3165 0.92 15.89ns
on_error 1.01ns 1.15298 0.87 16.87ns
on_completed 1.35ns 1.61597 0.84 0.67ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 214.20ns 250.973 0.85 376.74ns
get_observable 29.44ns 34.3532 0.86 98.19ns
get_subscriber 57.45ns 66.6444 0.86 97.40ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 4192.20ns 4917.9 0.85 7133.69ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 115.31ns 129.829 0.89 895.45ns
sending of values from observable via scan to subscriber 2.34ns 2.40799 0.97 1.63ns

single-threaded locks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no-lock increment 2.01ns 2.15514 0.93 .
mutex lock increment 7.90ns 8.63678 0.92 .
spin-lock increment 9.04ns 10.4086 0.87 .

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 115.00ns 133.806 0.86 1102.41ns
sending of values from observable via skip to subscriber 2.36ns 2.72343 0.87 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 2336.25ns 2802.46 0.83 10585.50ns
sending of values from observable via switch_on_next to subscriber 607.24ns 721.291 0.84 2936.40ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 175.01ns 187.461 0.93 1366.15ns
sending of values from observable via take to subscriber 3.50ns 3.69793 0.95 4.04ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 209.39ns 232.46 0.90 1401.24ns
sending of values from observable via take_last to subscriber 3.08ns 3.67292 0.84 5.97ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 1073.06ns 1252.73 0.86 3506.71ns
sending of values from observable via take_until to subscriber 9.03ns 9.89507 0.91 1.86ns

timeout

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
timeout construction from observable via dot + subscribe with run_loop 1112.13ns 1244.8 0.89 14786.90ns
sending of values from observable via timeout to subscriber with unreachable timeout interval with run_loop 62.55ns 66.0024 0.95 2320.55ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 20.98ns 21.5207 0.98 368.58ns
re-schedule 10 times 50.84ns 55.8393 0.91 401.82ns
recursively schedule 10 times 1475.21ns 1641.18 0.90 19838.20ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 2011.97ns 2113.08 0.95 6233.88ns
sending of values from observable via window to subscriber 544.03ns 615.09 0.88 950.37ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 1047.73ns 1230.25 0.85 .
sending of values from observable via with_latest_from to subscriber 15.44ns 18.0748 0.85 .

ci-windows

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 1.51ns 1.88337 0.80 0.67ns
Dynamic observable construction 80.04ns 58.4887 1.37 122.18ns
Specific observable construction + as_dynamic 79.56ns 65.8542 1.21 122.05ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 147.74ns 82.0105 1.80 1226.50ns
Specific observable lift dynamic observer 181.76ns 91.5752 1.98 1272.43ns
Dynamic observable lift specific observer 282.80ns 150.638 1.88 1415.50ns
Dynamic observable lift dynamic observer 235.71ns 108.727 2.17 1513.50ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 112.75ns 76.2113 1.48 1172.05ns
Specific observable subscribe dynamic observer 130.62ns 75.1388 1.74 1201.05ns
Dynamic observable subscribe specific observer 227.91ns 144.482 1.58 1559.89ns
Dynamic observable subscribe dynamic observer 179.54ns 86.442 2.08 1242.90ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 118.27ns 72.3356 1.64 1175.32ns
Dynamic observable subscribe lambda 227.39ns 138.498 1.64 1338.74ns
Specific observable subscribe lambda without subscription 114.82ns 72.8543 1.58 1167.82ns
Dynamic observable subscribe lambda without subscription 230.16ns 133.866 1.72 1350.32ns
Specific observable subscribe specific subscriber 30.46ns 17.129 1.78 839.90ns
Dynamic observable subscribe specific subscriber 146.56ns 83.3718 1.76 1020.76ns
Specific observable subscribe dynamic observer 30.44ns 17.5144 1.74 874.97ns
Dynamic observable subscribe dynamic observer 90.75ns 30.4692 2.98 925.18ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 1.50ns 1.86319 0.81 1.50ns
Dynamic observer construction 81.16ns 56.5302 1.44 113.88ns
Specific observer construction + as_dynamic 81.17ns 56.5885 1.43 112.79ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.67ns 0.624338 1.07 0.67ns
Dynamic observer OnNext 1.84ns 2.11288 0.87 1.70ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 85.76ns 56.1678 1.53 351.03ns
Make copy of subscriber 16.70ns 4.95854 3.37 31.42ns
Transform subsriber to dynamic 95.79ns 62.9044 1.52 149.92ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 86.02ns 56.4039 1.53 343.43ns
composite_subscription add 71.53ns 34.9534 2.05 152.51ns
composite_subscription unsubscribe 62.05ns 32.1423 1.93 126.66ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 335.09ns 213.512 1.57 4456.00ns
sending of values from observable via buffer to subscriber 5.89ns 6.59706 0.89 90.10ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 269.68ns 95.7731 2.82 1733.14ns
long stateful chain creation + subscribe 662.16ns 358.443 1.85 3173.12ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 1602.07ns 943.903 1.70 .
sending of values from observable via combine_latest to subscriber 47.30ns 24.0291 1.97 .

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 2731.40ns 1467.73 1.86 10621.70ns
concat_with 3401.75ns 1810.06 1.88 11698.00ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 184.07ns 110.894 1.66 1022.56ns
sending of values from observable via distinct_until_changed to subscriber 4.18ns 3.62229 1.15 4.28ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 127.69ns 47.2058 2.70 2623.30ns
sending of values from observable via first to subscriber 2.79ns 2.86886 0.97 1.76ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 62.79ns 25.9671 2.42 2391.27ns
error 112.23ns 40.4171 2.78 2493.20ns
never 30.93ns 15.8661 1.95 881.35ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 134.54ns 89.385 1.51 2841.40ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 2.01ns 1.30017 1.55 410.68ns
re-schedule 10 times 98.24ns 126.603 0.78 439.95ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 66.41ns 29.2371 2.27 2404.18ns
just send variadic 101.59ns 60.4361 1.68 2485.30ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 222.55ns 107.706 2.07 1427.88ns
sending of values from observable via last to subscriber 3.35ns 3.0476 1.10 3.31ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 88.29ns 36.0294 2.45 989.81ns
sending of values from observable via map to subscriber 4.01ns 3.20253 1.25 7.54ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 2665.30ns 1374.35 1.94 10923.30ns
merge_with 3332.75ns 1727.78 1.93 11648.70ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 1196.62ns 825.054 1.45 5604.00ns
sending of values from observable via observe_on to subscriber 199.63ns 143.704 1.39 868.15ns

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 642.84ns 546.976 1.18 1846.46ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 19.96ns 7.12879 2.80 32.75ns
on_error 3.04ns 2.9916 1.01 19.13ns
on_completed 3.04ns 2.21855 1.37 0.68ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 354.75ns 191.444 1.85 604.62ns
get_observable 28.86ns 10.4689 2.76 161.96ns
get_subscriber 50.19ns 19.6921 2.55 93.85ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 7005.60ns 3041.1 2.30 11304.70ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 182.45ns 103.209 1.77 1247.14ns
sending of values from observable via scan to subscriber 5.87ns 4.88999 1.20 8.85ns

single-threaded locks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no-lock increment 1.88ns 1.0741 1.75 .
mutex lock increment 25.76ns 16.3868 1.57 .
spin-lock increment 9.03ns 4.07521 2.22 .

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 177.08ns 104.513 1.69 1532.38ns
sending of values from observable via skip to subscriber 3.35ns 3.49532 0.96 3.50ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 3505.88ns 1725.59 2.03 12011.00ns
sending of values from observable via switch_on_next to subscriber 854.00ns 408.395 2.09 3085.67ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 224.60ns 114.656 1.96 2182.67ns
sending of values from observable via take to subscriber 6.36ns 5.39572 1.18 6.47ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 324.30ns 171.357 1.89 2418.73ns
sending of values from observable via take_last to subscriber 4.23ns 3.8321 1.10 20.51ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 1576.19ns 835.559 1.89 5191.20ns
sending of values from observable via take_until to subscriber 13.39ns 5.90668 2.27 5.53ns

timeout

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
timeout construction from observable via dot + subscribe with run_loop 2110.08ns 970.786 2.17 5508.25ns
sending of values from observable via timeout to subscriber with unreachable timeout interval with run_loop 54.04ns 33.4953 1.61 1353.75ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 21.36ns 18.5173 1.15 611.86ns
re-schedule 10 times 122.18ns 162.937 0.75 641.97ns
recursively schedule 10 times 2659.20ns 1949.89 1.36 19040.00ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 2888.89ns 1529.65 1.89 9678.67ns
sending of values from observable via window to subscriber 821.10ns 457.875 1.79 1643.06ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 1995.75ns 1088.56 1.83 .
sending of values from observable via with_latest_from to subscriber 38.13ns 23.8519 1.60 .

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

0.0% 0.0% Coverage
0.0% 0.0% Duplication

@AlexInLog AlexInLog closed this Dec 12, 2022
@AlexInLog AlexInLog deleted the shared_ptrs branch December 12, 2022 20:14
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