Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RPPQT: QT support for RPP. Part 1: from_signal #291

Merged
merged 32 commits into from
Nov 16, 2022
Merged

RPPQT: QT support for RPP. Part 1: from_signal #291

merged 32 commits into from
Nov 16, 2022

Conversation

victimsnino
Copy link
Owner

@victimsnino victimsnino commented Nov 13, 2022

@codecov
Copy link

codecov bot commented Nov 14, 2022

Codecov Report

Merging #291 (c3e88fd) into main (af05712) will increase coverage by 0.01%.
The diff coverage is 100.00%.

❗ Current head c3e88fd differs from pull request most recent head cb85f85. Consider uploading reports for the commit cb85f85 to get more accurate results

@@            Coverage Diff             @@
##             main     #291      +/-   ##
==========================================
+ Coverage   98.59%   98.61%   +0.01%     
==========================================
  Files         107      108       +1     
  Lines        1496     1513      +17     
==========================================
+ Hits         1475     1492      +17     
  Misses         21       21              
Impacted Files Coverage Δ
src/rppqt/rppqt/sources/from_signal.hpp 100.00% <100.00%> (ø)

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

@github-actions
Copy link
Contributor

github-actions bot commented Nov 15, 2022

BENCHMARK RESULTS (AUTOGENERATED)

ci-ubuntu-clang

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 0.42ns 0.335122 1.24 0.40ns
Dynamic observable construction 31.53ns 29.1319 1.08 25.22ns
Specific observable construction + as_dynamic 31.54ns 29.1592 1.08 25.64ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 91.84ns 88.879 1.03 299.22ns
Specific observable lift dynamic observer 117.92ns 110.717 1.07 314.62ns
Dynamic observable lift specific observer 171.01ns 170.166 1.00 347.98ns
Dynamic observable lift dynamic observer 188.12ns 177.185 1.06 334.97ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 56.70ns 58.047 0.98 297.65ns
Specific observable subscribe dynamic observer 71.24ns 71.4697 1.00 302.20ns
Dynamic observable subscribe specific observer 121.96ns 129.131 0.94 345.60ns
Dynamic observable subscribe dynamic observer 126.51ns 123.787 1.02 322.39ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 57.24ns 57.9484 0.99 296.21ns
Dynamic observable subscribe lambda 121.03ns 124.01 0.98 332.52ns
Specific observable subscribe lambda without subscription 56.68ns 57.9949 0.98 296.67ns
Dynamic observable subscribe lambda without subscription 120.65ns 124.221 0.97 337.50ns
Specific observable subscribe specific subscriber 26.11ns 27.8524 0.94 234.44ns
Dynamic observable subscribe specific subscriber 89.16ns 88.4371 1.01 306.57ns
Specific observable subscribe dynamic observer 26.13ns 27.7978 0.94 242.12ns
Dynamic observable subscribe dynamic observer 77.89ns 77.8745 1.00 263.39ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.40ns 0.335191 1.20 0.40ns
Dynamic observer construction 31.38ns 29.2558 1.07 20.72ns
Specific observer construction + as_dynamic 31.58ns 29.2021 1.08 19.29ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.80ns 0.669875 1.20 0.44ns
Dynamic observer OnNext 2.00ns 2.01009 1.00 1.61ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 34.25ns 34.8536 0.98 70.21ns
Make copy of subscriber 16.08ns 16.7356 0.96 4.91ns
Transform subsriber to dynamic 44.64ns 43.5353 1.03 25.16ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 33.53ns 34.8363 0.96 48.92ns
composite_subscription add 54.23ns 47.4312 1.14 94.91ns
composite_subscription unsubscribe 44.44ns 43.4048 1.02 21.93ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 243.35ns 246.425 0.99 1872.09ns
sending of values from observable via buffer to subscriber 4.82ns 5.36533 0.90 23.42ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 281.24ns 254.989 1.10 520.81ns
long stateful chain creation + subscribe 403.53ns 371.428 1.09 1314.12ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 912.32ns 859.489 1.06 907.97ns
sending of values from observable via combine_latest to subscriber 34.09ns 27.446 1.24 1.64ns

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 1960.03ns 1876.32 1.04 3692.29ns
concat_with 2316.27ns 2166.46 1.07 4096.34ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 112.41ns 110.613 1.02 249.77ns
sending of values from observable via distinct_until_changed to subscriber 2.41ns 2.6762 0.90 2.01ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 135.68ns 124.769 1.09 623.61ns
sending of values from observable via first to subscriber 0.80ns 0.670649 1.20 0.81ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 64.68ns 61.7052 1.05 671.50ns
error 114.07ns 112.132 1.02 782.39ns
never 26.21ns 28.7297 0.91 246.79ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 77.81ns 79.6583 0.98 710.52ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 0.74ns 1.34033 0.56 109.64ns
re-schedule 10 times 10.84ns 11.4591 0.95 138.98ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 65.58ns 64.5378 1.02 677.50ns
just send variadic 88.09ns 94.609 0.93 771.51ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 173.29ns 169.2 1.02 366.31ns
sending of values from observable via last to subscriber 2.45ns 2.05882 1.19 1.55ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 76.42ns 68.5969 1.11 243.51ns
sending of values from observable via map to subscriber 0.90ns 1.33914 0.67 1.69ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 1899.23ns 1815.77 1.05 3659.18ns
merge_with 2265.50ns 2115.76 1.07 3958.93ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 443.43ns 424.172 1.05 2529.37ns
sending of values from observable via observe_on to subscriber 60.92ns 61.5167 0.99 196.47ns

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 435.51ns 421.845 1.03 910.53ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 30.27ns 24.0872 1.26 9.68ns
on_error 0.61ns 0.673276 0.90 19.01ns
on_completed 0.61ns 0.673537 0.90 0.60ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 200.63ns 187.847 1.07 157.45ns
get_observable 33.75ns 26.5392 1.27 45.30ns
get_subscriber 66.69ns 60.5553 1.10 11.64ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 4137.77ns 3887.53 1.06 3160.75ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 106.75ns 102.646 1.04 308.60ns
sending of values from observable via scan to subscriber 2.01ns 2.00652 1.00 1.81ns

single-threaded locks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no-lock increment 3.14ns 2.0209 1.55 .
mutex lock increment 22.52ns 18.0721 1.25 .
spin-lock increment 10.43ns 9.04208 1.15 .

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 104.84ns 98.8196 1.06 477.25ns
sending of values from observable via skip to subscriber 2.47ns 2.34404 1.05 2.57ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 2367.12ns 2198.37 1.08 3185.67ns
sending of values from observable via switch_on_next to subscriber 629.99ns 580.041 1.09 718.67ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 180.06ns 169.597 1.06 511.62ns
sending of values from observable via take to subscriber 2.04ns 2.34667 0.87 2.27ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 214.18ns 210.335 1.02 545.35ns
sending of values from observable via take_last to subscriber 3.28ns 2.70252 1.21 3.71ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 1075.39ns 1029.81 1.04 1298.36ns
sending of values from observable via take_until to subscriber 10.43ns 9.03209 1.15 2.02ns

timeout

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
timeout construction from observable via dot + subscribe with run_loop 898.95ns 868.897 1.03 12356.80ns
sending of values from observable via timeout to subscriber with unreachable timeout interval with run_loop 58.96ns 55.8111 1.06 15967.60ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 9.81ns 11.4001 0.86 151.18ns
re-schedule 10 times 28.02ns 32.5587 0.86 184.39ns
recursively schedule 10 times 1466.42ns 1372.42 1.07 6802.50ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 2163.17ns 1990.55 1.09 3223.16ns
sending of values from observable via window to subscriber 595.38ns 540.741 1.10 371.51ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 1060.38ns 1016.01 1.04 1098.12ns
sending of values from observable via with_latest_from to subscriber 29.31ns 26.9993 1.09 2.45ns

ci-ubuntu-gcc

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 0.37ns 0.40192 0.93 0.41ns
Dynamic observable construction 33.62ns 30.0102 1.12 29.92ns
Specific observable construction + as_dynamic 35.72ns 29.9242 1.19 29.66ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 109.98ns 100.813 1.09 413.86ns
Specific observable lift dynamic observer 139.17ns 138.987 1.00 409.81ns
Dynamic observable lift specific observer 208.71ns 190.361 1.10 455.71ns
Dynamic observable lift dynamic observer 221.82ns 211.454 1.05 429.39ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 79.31ns 67.5637 1.17 377.22ns
Specific observable subscribe dynamic observer 87.10ns 76.8076 1.13 390.91ns
Dynamic observable subscribe specific observer 144.88ns 134.874 1.07 512.81ns
Dynamic observable subscribe dynamic observer 143.24ns 140.798 1.02 407.02ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 66.43ns 59.5883 1.11 392.19ns
Dynamic observable subscribe lambda 164.91ns 142.198 1.16 428.37ns
Specific observable subscribe lambda without subscription 65.46ns 59.5564 1.10 377.93ns
Dynamic observable subscribe lambda without subscription 145.47ns 143.535 1.01 432.63ns
Specific observable subscribe specific subscriber 41.31ns 27.3309 1.51 319.45ns
Dynamic observable subscribe specific subscriber 110.33ns 97.5935 1.13 361.48ns
Specific observable subscribe dynamic observer 35.11ns 29.7062 1.18 331.28ns
Dynamic observable subscribe dynamic observer 98.86ns 97.629 1.01 337.98ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.38ns 0.402111 0.94 0.39ns
Dynamic observer construction 32.70ns 28.9432 1.13 22.40ns
Specific observer construction + as_dynamic 40.26ns 29.148 1.38 22.78ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.37ns 0.435365 0.86 0.48ns
Dynamic observer OnNext 2.23ns 2.00952 1.11 2.29ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 38.97ns 33.9173 1.15 83.85ns
Make copy of subscriber 32.31ns 16.0679 2.01 5.51ns
Transform subsriber to dynamic 48.96ns 45.0234 1.09 26.56ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 39.33ns 33.9033 1.16 70.17ns
composite_subscription add 54.56ns 51.7501 1.05 67.66ns
composite_subscription unsubscribe 48.90ns 45.2184 1.08 29.91ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 269.74ns 232.159 1.16 2344.97ns
sending of values from observable via buffer to subscriber 7.44ns 6.60334 1.13 34.77ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 332.74ns 325.968 1.02 809.79ns
long stateful chain creation + subscribe 500.10ns 457.486 1.09 1515.13ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 1047.90ns 940.209 1.11 1380.22ns
sending of values from observable via combine_latest to subscriber 72.83ns 33.7254 2.16 1.89ns

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 2188.67ns 2021.34 1.08 4397.58ns
concat_with 2615.96ns 2393.16 1.09 4657.50ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 136.46ns 122.779 1.11 421.92ns
sending of values from observable via distinct_until_changed to subscriber 3.35ns 3.20928 1.04 1.40ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 158.82ns 147.111 1.08 841.98ns
sending of values from observable via first to subscriber 0.75ns 1.20833 0.62 0.64ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 79.23ns 68.3492 1.16 873.71ns
error 135.13ns 116.892 1.16 981.42ns
never 46.54ns 28.9776 1.61 452.85ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 96.93ns 81.3842 1.19 922.54ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 1.04ns 0.80457 1.29 145.75ns
re-schedule 10 times 19.78ns 19.1193 1.03 188.84ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 81.30ns 71.0862 1.14 1016.55ns
just send variadic 123.75ns 93.0917 1.33 973.98ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 205.88ns 179.828 1.14 517.21ns
sending of values from observable via last to subscriber 3.51ns 2.00227 1.75 1.81ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 92.65ns 83.8694 1.10 403.41ns
sending of values from observable via map to subscriber 1.25ns 0.802065 1.55 1.72ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 2126.30ns 1978.27 1.07 4507.49ns
merge_with 2574.37ns 2368.77 1.09 15228.00ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 573.73ns 480.816 1.19 3250.25ns
sending of values from observable via observe_on to subscriber 74.73ns 71.614 1.04 278.34ns

on_error_resume_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_error_resume_next construction from observable via dot + subscribe 510.55ns 458.795 1.11 879.28ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 28.20ns 29.8553 0.94 13.27ns
on_error 0.76ns 0.807505 0.94 19.59ns
on_completed 1.78ns 0.80852 2.20 0.75ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 234.48ns 216.91 1.08 234.47ns
get_observable 32.88ns 33.3651 0.99 51.57ns
get_subscriber 60.54ns 63.9168 0.95 25.67ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 4788.08ns 4327.58 1.11 3760.43ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 136.51ns 114.684 1.19 444.47ns
sending of values from observable via scan to subscriber 2.60ns 2.01122 1.29 2.16ns

single-threaded locks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no-lock increment 2.38ns 2.40108 0.99 .
mutex lock increment 23.82ns 22.0509 1.08 .
spin-lock increment 13.25ns 10.6526 1.24 .

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 128.42ns 117.136 1.10 619.22ns
sending of values from observable via skip to subscriber 2.75ns 3.23172 0.85 2.25ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 2655.31ns 2437.26 1.09 5024.74ns
sending of values from observable via switch_on_next to subscriber 675.44ns 628.415 1.07 1296.02ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 219.26ns 172.876 1.27 824.56ns
sending of values from observable via take to subscriber 4.43ns 4.06226 1.09 3.76ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 242.04ns 215.199 1.12 754.99ns
sending of values from observable via take_last to subscriber 3.71ns 3.38547 1.10 7.62ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 1269.14ns 1109.63 1.14 1812.79ns
sending of values from observable via take_until to subscriber 13.00ns 10.4527 1.24 2.15ns

timeout

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
timeout construction from observable via dot + subscribe with run_loop 1099.76ns 950.12 1.16 20115.40ns
sending of values from observable via timeout to subscriber with unreachable timeout interval with run_loop 64.63ns 61.9874 1.04 18036.90ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 26.14ns 20.1127 1.30 204.42ns
re-schedule 10 times 53.77ns 39.7738 1.35 256.05ns
recursively schedule 10 times 1650.87ns 1395.15 1.18 11216.00ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 2409.27ns 2210.54 1.09 4570.71ns
sending of values from observable via window to subscriber 665.95ns 605.042 1.10 488.86ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 1286.01ns 1109.38 1.16 2439.05ns
sending of values from observable via with_latest_from to subscriber 36.61ns 31.8214 1.15 5.38ns

ci-windows

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 1.98ns 1.50569 1.31 0.81ns
Dynamic observable construction 107.27ns 81.3814 1.32 149.72ns
Specific observable construction + as_dynamic 103.67ns 81.1624 1.28 153.74ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 177.14ns 144.0 1.23 1504.16ns
Specific observable lift dynamic observer 219.40ns 177.601 1.24 1630.42ns
Dynamic observable lift specific observer 372.56ns 286.644 1.30 1800.56ns
Dynamic observable lift dynamic observer 297.19ns 236.168 1.26 1749.61ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 152.26ns 109.803 1.39 1547.45ns
Specific observable subscribe dynamic observer 154.67ns 130.692 1.18 1516.44ns
Dynamic observable subscribe specific observer 295.94ns 230.664 1.28 1709.00ns
Dynamic observable subscribe dynamic observer 208.07ns 178.958 1.16 1623.45ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 135.60ns 111.136 1.22 1528.05ns
Dynamic observable subscribe lambda 301.99ns 229.214 1.32 1772.88ns
Specific observable subscribe lambda without subscription 137.51ns 110.804 1.24 1913.52ns
Dynamic observable subscribe lambda without subscription 285.14ns 228.848 1.25 1817.68ns
Specific observable subscribe specific subscriber 38.80ns 30.4508 1.27 1075.00ns
Dynamic observable subscribe specific subscriber 174.15ns 147.848 1.18 1420.60ns
Specific observable subscribe dynamic observer 45.78ns 30.4587 1.50 1255.46ns
Dynamic observable subscribe dynamic observer 123.24ns 78.6498 1.57 1167.77ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 2.14ns 1.5032 1.42 2.00ns
Dynamic observer construction 108.03ns 83.1471 1.30 140.28ns
Specific observer construction + as_dynamic 106.36ns 83.082 1.28 151.63ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.85ns 0.668549 1.26 0.85ns
Dynamic observer OnNext 2.34ns 2.00803 1.17 2.90ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 101.88ns 83.8053 1.22 440.80ns
Make copy of subscriber 19.49ns 16.7195 1.17 39.69ns
Transform subsriber to dynamic 136.14ns 97.6023 1.39 197.03ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 101.15ns 84.0461 1.20 423.65ns
composite_subscription add 100.55ns 70.7178 1.42 207.79ns
composite_subscription unsubscribe 76.74ns 61.6046 1.25 180.54ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 408.55ns 352.123 1.16 6030.17ns
sending of values from observable via buffer to subscriber 7.63ns 7.29862 1.05 133.03ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 345.33ns 269.852 1.28 2099.69ns
long stateful chain creation + subscribe 803.97ns 658.917 1.22 4061.00ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 2153.43ns 1669.73 1.29 3752.71ns
sending of values from observable via combine_latest to subscriber 57.18ns 47.2388 1.21 4.76ns

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 3404.78ns 2743.1 1.24 12788.70ns
concat_with 4695.86ns 3414.5 1.38 14804.50ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 230.76ns 184.712 1.25 1296.87ns
sending of values from observable via distinct_until_changed to subscriber 5.79ns 4.65447 1.24 4.92ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 158.22ns 128.103 1.24 3677.00ns
sending of values from observable via first to subscriber 3.24ns 2.3519 1.38 1.23ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 82.72ns 63.6082 1.30 3058.80ns
error 149.49ns 111.626 1.34 3332.60ns
never 46.70ns 30.7598 1.52 1131.60ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 178.22ns 134.958 1.32 3013.22ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 1.70ns 1.67554 1.01 555.80ns
re-schedule 10 times 127.83ns 97.7969 1.31 550.21ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 83.57ns 66.0268 1.27 3275.50ns
just send variadic 168.18ns 103.015 1.63 9732.40ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 316.02ns 223.463 1.41 1911.73ns
sending of values from observable via last to subscriber 4.12ns 3.19713 1.29 4.57ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 105.69ns 88.2951 1.20 1307.04ns
sending of values from observable via map to subscriber 4.02ns 3.51351 1.15 14.20ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 3376.78ns 2655.2 1.27 13361.30ns
merge_with 4331.43ns 3316.0 1.31 14578.70ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 756.11ns 623.158 1.21 7558.40ns
sending of values from observable via observe_on to subscriber 87.41ns 64.8397 1.35 967.62ns

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 819.31ns 637.421 1.29 2309.42ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 27.95ns 20.26 1.38 39.12ns
on_error 3.40ns 2.8121 1.21 21.78ns
on_completed 3.09ns 3.04048 1.02 0.89ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 456.91ns 368.585 1.24 745.97ns
get_observable 35.08ns 26.0677 1.35 204.07ns
get_subscriber 66.79ns 50.1598 1.33 120.30ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 7934.33ns 6062.8 1.31 14347.30ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 222.76ns 181.942 1.22 1550.05ns
sending of values from observable via scan to subscriber 7.32ns 5.4 1.36 10.61ns

single-threaded locks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no-lock increment 3.26ns 1.8843 1.73 .
mutex lock increment 27.97ns 31.7765 0.88 .
spin-lock increment 13.43ns 9.05706 1.48 .

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 217.12ns 177.0 1.23 1925.54ns
sending of values from observable via skip to subscriber 4.53ns 3.43908 1.32 5.61ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 11680.30ns 3511.0 3.33 14957.00ns
sending of values from observable via switch_on_next to subscriber 1075.19ns 854.467 1.26 3915.62ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 272.36ns 224.515 1.21 2832.00ns
sending of values from observable via take to subscriber 6.62ns 5.73603 1.15 7.16ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 416.28ns 323.414 1.29 3138.22ns
sending of values from observable via take_last to subscriber 4.93ns 4.23818 1.16 29.39ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 2133.93ns 1607.69 1.33 6708.50ns
sending of values from observable via take_until to subscriber 14.52ns 11.3881 1.28 6.63ns

timeout

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
timeout construction from observable via dot + subscribe with run_loop 1726.38ns 1494.41 1.16 7547.25ns
sending of values from observable via timeout to subscriber with unreachable timeout interval with run_loop 67.58ns 55.4894 1.22 1730.00ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 23.71ns 18.8059 1.26 824.21ns
re-schedule 10 times 160.15ns 121.961 1.31 798.58ns
recursively schedule 10 times 4011.00ns 2620.4 1.53 25803.00ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 3763.75ns 2935.67 1.28 12440.00ns
sending of values from observable via window to subscriber 1002.38ns 830.742 1.21 2228.40ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 2561.55ns 2022.58 1.27 4848.67ns
sending of values from observable via with_latest_from to subscriber 44.42ns 38.084 1.17 8.60ns

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ clang-tidy found issue(s) with the introduced code (1/1)

src/examples/rppqt/doxygen/from_signal.cpp Show resolved Hide resolved
@sonarcloud
Copy link

sonarcloud bot commented Nov 16, 2022

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 19 Code Smells

0.0% 0.0% Coverage
0.0% 0.0% Duplication

@victimsnino victimsnino merged commit 559757b into main Nov 16, 2022
@victimsnino victimsnino deleted the rppqt branch November 16, 2022 21:02
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