Skip to content

Start to support macos#298

Merged
AlexInLog merged 17 commits into
mainfrom
macos_support
Nov 25, 2022
Merged

Start to support macos#298
AlexInLog merged 17 commits into
mainfrom
macos_support

Conversation

@AlexInLog

@AlexInLog AlexInLog commented Nov 24, 2022

Copy link
Copy Markdown
Owner

Try to resolve #295:

  • Remove usage of std::ranges and std::stop_token

@codecov

codecov Bot commented Nov 25, 2022

Copy link
Copy Markdown

Codecov Report

Merging #298 (aad83b7) into main (d2c8f10) will decrease coverage by 0.11%.
The diff coverage is 96.15%.

@@            Coverage Diff             @@
##             main     #298      +/-   ##
==========================================
- Coverage   98.37%   98.26%   -0.12%     
==========================================
  Files         109      109              
  Lines        1541     1556      +15     
==========================================
+ Hits         1516     1529      +13     
- Misses         25       27       +2     
Impacted Files Coverage Δ
src/rpp/rpp/subscriptions/subscription_guard.hpp 68.75% <0.00%> (-4.59%) ⬇️
src/rpp/rpp/schedulers/new_thread_scheduler.hpp 94.11% <90.90%> (-1.89%) ⬇️
.../rpp/rpp/schedulers/details/queue_worker_state.hpp 98.21% <100.00%> (+0.29%) ⬆️
src/rpp/rpp/schedulers/run_loop_scheduler.hpp 100.00% <100.00%> (ø)
src/rpp/rpp/sources/from.hpp 100.00% <100.00%> (ø)
src/rpp/rpp/subjects/details/subject_state.hpp 100.00% <100.00%> (ø)
...c/rpp/rpp/subscriptions/composite_subscription.hpp 87.87% <100.00%> (ø)
src/rpp/rpp/utils/utilities.hpp 100.00% <100.00%> (ø)

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

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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

std::condition_variable_any m_cv{};
std::priority_queue<schedulable<SchedulableFn>> m_queue{};
size_t m_current_id{};
subscription_guard m_subscription = callback_subscription{[&]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ clang-diagnostic-error ⚠️
no viable conversion from rpp::callback_subscription to rpp::subscription_guard

@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 None . 0.31ns
Dynamic observable construction 73.64ns None . 121.03ns
Specific observable construction + as_dynamic 74.65ns None . 110.06ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 147.12ns None . 1068.41ns
Specific observable lift dynamic observer 169.87ns None . 1142.91ns
Dynamic observable lift specific observer 257.73ns None . 1271.78ns
Dynamic observable lift dynamic observer 215.77ns None . 1217.92ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 137.30ns None . 1063.41ns
Specific observable subscribe dynamic observer 120.36ns None . 1053.84ns
Dynamic observable subscribe specific observer 230.91ns None . 1245.33ns
Dynamic observable subscribe dynamic observer 164.02ns None . 1098.89ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 107.68ns None . 1130.04ns
Dynamic observable subscribe lambda 211.57ns None . 1292.69ns
Specific observable subscribe lambda without subscription 122.67ns None . 1144.79ns
Dynamic observable subscribe lambda without subscription 208.74ns None . 1226.39ns
Specific observable subscribe specific subscriber 30.07ns None . 867.61ns
Dynamic observable subscribe specific subscriber 133.24ns None . 1008.13ns
Specific observable subscribe dynamic observer 50.35ns None . 860.84ns
Dynamic observable subscribe dynamic observer 75.83ns None . 887.47ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.28ns None . 0.29ns
Dynamic observer construction 74.67ns None . 101.10ns
Specific observer construction + as_dynamic 76.97ns None . 102.08ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.81ns None . 0.83ns
Dynamic observer OnNext 2.33ns None . 2.11ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 76.48ns None . 290.51ns
Make copy of subscriber 13.43ns None . 24.55ns
Transform subsriber to dynamic 85.82ns None . 123.95ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 68.91ns None . 283.59ns
composite_subscription add 57.82ns None . 98.63ns
composite_subscription unsubscribe 76.55ns None . 77.55ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 337.29ns None . 3083.86ns
sending of values from observable via buffer to subscriber 5.93ns None . 83.92ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 219.19ns None . 1280.97ns
long stateful chain creation + subscribe 540.58ns None . 2610.84ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 1408.04ns None . 2349.39ns
sending of values from observable via combine_latest to subscriber 29.06ns None . 1.95ns

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 2638.52ns None . 8814.68ns
concat_with 3283.07ns None . 10157.40ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 150.12ns None . 861.04ns
sending of values from observable via distinct_until_changed to subscriber 2.24ns None . 1.10ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 131.34ns None . 2119.90ns
sending of values from observable via first to subscriber 0.86ns None . 0.83ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 64.14ns None . 2136.22ns
error 116.37ns None . 2275.03ns
never 34.11ns None . 824.85ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 139.23ns None . 2215.61ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 2.29ns None . 374.99ns
re-schedule 10 times 31.74ns None . 418.70ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 66.58ns None . 2144.00ns
just send variadic 92.22ns None . 2185.83ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 218.46ns None . 1215.05ns
sending of values from observable via last to subscriber 2.61ns None . 1.26ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 63.53ns None . 871.89ns
sending of values from observable via map to subscriber 1.17ns None . 1.39ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 2674.20ns None . 9247.30ns
merge_with 3237.12ns None . 9896.66ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 598.01ns None . 17419.30ns
sending of values from observable via observe_on to subscriber 105.05ns None . 866.26ns

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 581.27ns None . 2409.31ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 21.19ns None . 26.66ns
on_error 0.54ns None . 16.45ns
on_completed 0.58ns None . 2.47ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 353.85ns None . 533.36ns
get_observable 27.34ns None . 146.21ns
get_subscriber 53.46ns None . 75.39ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 5547.63ns None . 8839.18ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 148.00ns None . 1104.44ns
sending of values from observable via scan to subscriber 2.50ns None . 1.91ns

single-threaded locks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no-lock increment 1.91ns None . .
mutex lock increment 21.96ns None . .
spin-lock increment 8.66ns None . .

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 145.03ns None . 1344.30ns
sending of values from observable via skip to subscriber 2.28ns None . 1.90ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 3226.60ns None . 9825.93ns
sending of values from observable via switch_on_next to subscriber 817.01ns None . 2469.93ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 196.70ns None . 1780.75ns
sending of values from observable via take to subscriber 2.92ns None . 5.32ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 296.07ns None . 1939.26ns
sending of values from observable via take_last to subscriber 2.76ns None . 5.07ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 1524.59ns None . 4309.46ns
sending of values from observable via take_until to subscriber 8.01ns None . 2.23ns

timeout

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
timeout construction from observable via dot + subscribe with run_loop 1062.03ns None . 4089.84ns
sending of values from observable via timeout to subscriber with unreachable timeout interval with run_loop 71.46ns None . 850.95ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 45.45ns None . 559.39ns
re-schedule 10 times 89.88ns None . 609.53ns
recursively schedule 10 times 2044.84ns None . 15274.90ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 3036.94ns None . 7968.78ns
sending of values from observable via window to subscriber 858.66ns None . 1379.11ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 1568.70ns None . 2874.10ns
sending of values from observable via with_latest_from to subscriber 29.70ns None . 2.96ns

ci-ubuntu-clang

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 0.37ns 0.381429 0.98 0.38ns
Dynamic observable construction 32.49ns 33.3473 0.97 26.56ns
Specific observable construction + as_dynamic 33.08ns 38.487 0.86 28.81ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 109.23ns 107.685 1.01 347.62ns
Specific observable lift dynamic observer 135.37ns 138.763 0.98 370.43ns
Dynamic observable lift specific observer 196.34ns 202.447 0.97 393.68ns
Dynamic observable lift dynamic observer 206.22ns 262.003 0.79 393.53ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 67.45ns 67.2037 1.00 345.56ns
Specific observable subscribe dynamic observer 82.90ns 83.5675 0.99 399.67ns
Dynamic observable subscribe specific observer 147.84ns 142.279 1.04 392.94ns
Dynamic observable subscribe dynamic observer 143.01ns 137.311 1.04 375.81ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 67.50ns 67.0775 1.01 340.58ns
Dynamic observable subscribe lambda 140.12ns 154.501 0.91 385.73ns
Specific observable subscribe lambda without subscription 66.18ns 74.8243 0.88 330.57ns
Dynamic observable subscribe lambda without subscription 143.78ns 147.429 0.98 392.15ns
Specific observable subscribe specific subscriber 32.11ns 39.6418 0.81 270.71ns
Dynamic observable subscribe specific subscriber 98.55ns 102.337 0.96 333.81ns
Specific observable subscribe dynamic observer 33.45ns 33.4352 1.00 293.28ns
Dynamic observable subscribe dynamic observer 89.84ns 88.1026 1.02 309.55ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.37ns 0.379018 0.98 0.37ns
Dynamic observer construction 33.62ns 34.5202 0.97 23.67ns
Specific observer construction + as_dynamic 35.67ns 32.4165 1.10 23.31ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.76ns 0.785832 0.96 0.74ns
Dynamic observer OnNext 2.26ns 2.24521 1.00 2.70ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 40.08ns 40.0209 1.00 74.66ns
Make copy of subscriber 19.76ns 20.1556 0.98 6.11ns
Transform subsriber to dynamic 48.15ns 52.75 0.91 29.30ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 40.98ns 41.7454 0.98 60.12ns
composite_subscription add 62.38ns 63.2092 0.99 102.06ns
composite_subscription unsubscribe 47.72ns 48.5717 0.98 25.96ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 287.58ns 283.073 1.02 2161.23ns
sending of values from observable via buffer to subscriber 6.17ns 5.90772 1.04 29.58ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 289.81ns 304.534 0.95 610.20ns
long stateful chain creation + subscribe 434.00ns 431.752 1.01 1375.84ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 1002.62ns 1017.07 0.99 1114.96ns
sending of values from observable via combine_latest to subscriber 37.34ns 39.5736 0.94 2.42ns

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 2173.37ns 2407.35 0.90 3945.47ns
concat_with 2494.77ns 2491.32 1.00 4398.28ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 121.57ns 144.194 0.84 307.65ns
sending of values from observable via distinct_until_changed to subscriber 3.05ns 2.63733 1.16 1.51ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 147.74ns 151.799 0.97 703.83ns
sending of values from observable via first to subscriber 0.57ns 0.635934 0.90 0.58ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 72.39ns 84.3755 0.86 743.84ns
error 128.61ns 397.137 0.32 845.90ns
never 32.91ns 35.7007 0.92 305.13ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 88.57ns 139.821 0.63 801.36ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 0.61ns 0.557128 1.09 124.68ns
re-schedule 10 times 10.53ns 11.0586 0.95 169.29ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 77.28ns 75.2182 1.03 785.20ns
just send variadic 103.94ns 107.86 0.96 888.08ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 195.68ns 199.842 0.98 426.28ns
sending of values from observable via last to subscriber 3.48ns 3.35438 1.04 1.93ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 77.27ns 78.7415 0.98 300.29ns
sending of values from observable via map to subscriber 0.92ns 0.860209 1.07 4.21ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 2167.81ns 2690.91 0.81 3979.56ns
merge_with 2488.71ns 2749.71 0.91 4193.28ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 489.21ns 501.835 0.97 2937.52ns
sending of values from observable via observe_on to subscriber 61.45ns 64.177 0.96 243.44ns

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.26ns 714.323 0.87 807.27ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 27.31ns 27.3349 1.00 10.82ns
on_error 0.57ns 0.565083 1.01 19.48ns
on_completed 0.57ns 0.565356 1.00 0.58ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 256.37ns 243.86 1.05 220.46ns
get_observable 33.89ns 32.6407 1.04 67.41ns
get_subscriber 62.21ns 62.9724 0.99 14.87ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 4513.03ns 4774.61 0.95 3525.13ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 116.33ns 121.74 0.96 365.90ns
sending of values from observable via scan to subscriber 2.28ns 2.29829 0.99 2.11ns

single-threaded locks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no-lock increment 2.49ns 2.70514 0.92 .
mutex lock increment 21.00ns 20.834 1.01 .
spin-lock increment 12.35ns 12.5576 0.98 .

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 114.88ns 136.59 0.84 577.03ns
sending of values from observable via skip to subscriber 2.25ns 2.65211 0.85 2.30ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 2643.02ns 2541.36 1.04 3307.27ns
sending of values from observable via switch_on_next to subscriber 662.24ns 751.732 0.88 784.33ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 195.33ns 193.144 1.01 590.48ns
sending of values from observable via take to subscriber 2.66ns 3.06529 0.87 2.87ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 246.89ns 282.881 0.87 628.58ns
sending of values from observable via take_last to subscriber 3.62ns 3.51651 1.03 4.66ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 1209.93ns 1299.82 0.93 1389.57ns
sending of values from observable via take_until to subscriber 12.68ns 14.1951 0.89 2.32ns

timeout

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
timeout construction from observable via dot + subscribe with run_loop 985.66ns 1225.17 0.80 19192.00ns
sending of values from observable via timeout to subscriber with unreachable timeout interval with run_loop 59.79ns 112.572 0.53 18646.50ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 14.53ns 13.9901 1.04 192.43ns
re-schedule 10 times 31.82ns 31.0361 1.03 219.64ns
recursively schedule 10 times 1853.29ns 1796.17 1.03 10138.30ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 2424.00ns 2331.58 1.04 3600.58ns
sending of values from observable via window to subscriber 636.61ns 791.048 0.80 471.00ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 1197.92ns 1185.71 1.01 1329.95ns
sending of values from observable via with_latest_from to subscriber 31.16ns 30.928 1.01 3.58ns

ci-ubuntu-gcc

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 0.34ns 0.335189 1.00 0.33ns
Dynamic observable construction 31.55ns 31.5155 1.00 23.32ns
Specific observable construction + as_dynamic 31.60ns 31.4813 1.00 23.66ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 97.87ns 97.883 1.00 340.52ns
Specific observable lift dynamic observer 127.02ns 126.433 1.00 364.46ns
Dynamic observable lift specific observer 181.12ns 181.31 1.00 412.95ns
Dynamic observable lift dynamic observer 192.57ns 193.221 1.00 370.48ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 60.71ns 60.754 1.00 331.65ns
Specific observable subscribe dynamic observer 79.24ns 77.4177 1.02 336.83ns
Dynamic observable subscribe specific observer 129.08ns 130.621 0.99 376.32ns
Dynamic observable subscribe dynamic observer 127.52ns 127.477 1.00 350.75ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 60.71ns 60.7708 1.00 334.41ns
Dynamic observable subscribe lambda 130.80ns 131.285 1.00 395.97ns
Specific observable subscribe lambda without subscription 60.86ns 60.8399 1.00 345.38ns
Dynamic observable subscribe lambda without subscription 130.99ns 130.289 1.01 376.10ns
Specific observable subscribe specific subscriber 30.40ns 30.5578 0.99 269.01ns
Dynamic observable subscribe specific subscriber 97.23ns 97.9001 0.99 317.39ns
Specific observable subscribe dynamic observer 30.42ns 30.4161 1.00 274.85ns
Dynamic observable subscribe dynamic observer 84.99ns 85.1739 1.00 289.40ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.34ns 0.334972 1.00 0.33ns
Dynamic observer construction 31.45ns 31.455 1.00 21.06ns
Specific observer construction + as_dynamic 31.50ns 31.5065 1.00 20.54ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.34ns 0.335477 1.00 0.34ns
Dynamic observer OnNext 1.68ns 2.0101 0.84 1.73ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 34.42ns 34.7436 0.99 69.47ns
Make copy of subscriber 16.71ns 16.7508 1.00 4.46ns
Transform subsriber to dynamic 44.13ns 44.5152 0.99 25.64ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 34.49ns 34.57 1.00 58.70ns
composite_subscription add 47.32ns 49.6616 0.95 98.06ns
composite_subscription unsubscribe 41.50ns 41.5773 1.00 21.72ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 233.50ns 233.962 1.00 1932.34ns
sending of values from observable via buffer to subscriber 6.36ns 6.41271 0.99 31.82ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 287.33ns 290.914 0.99 693.77ns
long stateful chain creation + subscribe 425.76ns 429.403 0.99 1493.66ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 923.82ns 915.704 1.01 1142.34ns
sending of values from observable via combine_latest to subscriber 28.29ns 28.4507 0.99 2.34ns

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 1903.85ns 1911.7 1.00 3535.73ns
concat_with 2257.19ns 2257.01 1.00 3958.19ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 121.65ns 120.049 1.01 357.84ns
sending of values from observable via distinct_until_changed to subscriber 2.47ns 2.70104 0.91 2.35ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 136.84ns 138.117 0.99 713.25ns
sending of values from observable via first to subscriber 1.34ns 1.34274 1.00 1.01ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 67.20ns 67.4855 1.00 736.65ns
error 118.02ns 118.706 0.99 840.29ns
never 32.24ns 32.2142 1.00 282.12ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 86.15ns 85.8988 1.00 766.12ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 1.34ns 1.34294 1.00 130.43ns
re-schedule 10 times 22.47ns 22.4742 1.00 167.18ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 70.30ns 70.9764 0.99 758.72ns
just send variadic 112.00ns 111.049 1.01 845.65ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 176.12ns 176.608 1.00 452.05ns
sending of values from observable via last to subscriber 2.68ns 2.67849 1.00 1.34ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 92.04ns 82.1297 1.12 346.70ns
sending of values from observable via map to subscriber 0.75ns 0.754337 1.00 2.68ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 1861.72ns 1862.64 1.00 3759.19ns
merge_with 2228.91ns 2209.16 1.01 4044.07ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 470.36ns 469.621 1.00 2815.05ns
sending of values from observable via observe_on to subscriber 62.88ns 64.5359 0.97 240.06ns

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 436.72ns 435.261 1.00 831.49ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 22.42ns 22.4296 1.00 10.88ns
on_error 0.67ns 0.675904 1.00 16.81ns
on_completed 1.35ns 0.674321 2.00 0.67ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 212.35ns 208.314 1.02 182.81ns
get_observable 29.42ns 29.4538 1.00 49.31ns
get_subscriber 57.41ns 57.2345 1.00 23.10ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 4164.07ns 4139.03 1.01 3185.55ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 115.12ns 114.705 1.00 388.28ns
sending of values from observable via scan to subscriber 1.69ns 1.69454 1.00 1.67ns

single-threaded locks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no-lock increment 2.01ns 2.01226 1.00 .
mutex lock increment 18.09ns 18.106 1.00 .
spin-lock increment 9.03ns 9.04726 1.00 .

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 114.50ns 114.491 1.00 534.87ns
sending of values from observable via skip to subscriber 2.36ns 2.36309 1.00 2.35ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 2337.52ns 2319.55 1.01 4196.08ns
sending of values from observable via switch_on_next to subscriber 597.99ns 599.444 1.00 1101.80ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 173.33ns 175.469 0.99 596.87ns
sending of values from observable via take to subscriber 3.99ns 3.50108 1.14 3.49ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 205.95ns 206.274 1.00 647.75ns
sending of values from observable via take_last to subscriber 3.00ns 3.07302 0.98 6.24ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 1065.84ns 1077.9 0.99 1579.92ns
sending of values from observable via take_until to subscriber 10.23ns 9.02698 1.13 1.79ns

timeout

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
timeout construction from observable via dot + subscribe with run_loop 938.02ns 936.097 1.00 18382.20ns
sending of values from observable via timeout to subscriber with unreachable timeout interval with run_loop 58.32ns 58.2289 1.00 15295.50ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 20.90ns 22.8606 0.91 183.71ns
re-schedule 10 times 52.26ns 51.1198 1.02 221.72ns
recursively schedule 10 times 1439.31ns 1563.26 0.92 9153.91ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 2120.47ns 2135.23 0.99 3185.16ns
sending of values from observable via window to subscriber 590.19ns 584.793 1.01 422.99ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 1089.35ns 1093.57 1.00 1425.58ns
sending of values from observable via with_latest_from to subscriber 26.77ns 26.8111 1.00 4.50ns

ci-windows

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 2.01ns 1.92915 1.04 0.41ns
Dynamic observable construction 72.01ns 175.562 0.41 116.89ns
Specific observable construction + as_dynamic 71.87ns 197.005 0.36 116.43ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 136.42ns 224.556 0.61 1186.77ns
Specific observable lift dynamic observer 172.79ns 254.416 0.68 1320.19ns
Dynamic observable lift specific observer 268.85ns 422.631 0.64 1439.58ns
Dynamic observable lift dynamic observer 237.12ns 345.25 0.69 1277.05ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 98.92ns 209.231 0.47 1146.73ns
Specific observable subscribe dynamic observer 120.69ns 190.564 0.63 1273.38ns
Dynamic observable subscribe specific observer 206.21ns 453.935 0.45 1338.68ns
Dynamic observable subscribe dynamic observer 169.10ns 263.975 0.64 1228.10ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 100.13ns 195.818 0.51 1143.57ns
Dynamic observable subscribe lambda 210.19ns 421.15 0.50 1330.06ns
Specific observable subscribe lambda without subscription 100.90ns 216.516 0.47 1162.32ns
Dynamic observable subscribe lambda without subscription 229.56ns 510.329 0.45 2129.53ns
Specific observable subscribe specific subscriber 27.46ns 45.7709 0.60 847.21ns
Dynamic observable subscribe specific subscriber 132.91ns 211.341 0.63 1008.30ns
Specific observable subscribe dynamic observer 27.42ns 39.3187 0.70 870.04ns
Dynamic observable subscribe dynamic observer 85.57ns 102.715 0.83 906.25ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 2.02ns 1.92888 1.05 2.00ns
Dynamic observer construction 72.77ns 151.757 0.48 107.15ns
Specific observer construction + as_dynamic 73.13ns 130.929 0.56 108.61ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.80ns 0.80693 0.99 0.42ns
Dynamic observer OnNext 1.63ns 2.37581 0.69 3.37ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 75.72ns 134.961 0.56 327.53ns
Make copy of subscriber 16.05ns 17.5616 0.91 37.31ns
Transform subsriber to dynamic 85.60ns 146.889 0.58 144.10ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 73.49ns 154.935 0.47 325.34ns
composite_subscription add 68.01ns 95.7876 0.71 175.06ns
composite_subscription unsubscribe 62.58ns 79.6196 0.79 116.54ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 345.03ns 508.104 0.68 4392.17ns
sending of values from observable via buffer to subscriber 7.37ns 8.13925 0.91 89.69ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 293.65ns 311.962 0.94 1716.93ns
long stateful chain creation + subscribe 639.16ns 949.643 0.67 3243.38ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 1583.71ns 2612.09 0.61 3048.62ns
sending of values from observable via combine_latest to subscriber 47.55ns 56.2026 0.85 3.82ns

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 2725.89ns 5332.86 0.51 10579.00ns
concat_with 3435.00ns 5695.0 0.60 11536.70ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 177.22ns 275.339 0.64 1012.16ns
sending of values from observable via distinct_until_changed to subscriber 8.77ns 6.34153 1.38 3.62ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 140.55ns 195.631 0.72 2622.80ns
sending of values from observable via first to subscriber 2.37ns 3.18656 0.74 1.22ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 63.76ns 118.187 0.54 2348.73ns
error 122.10ns 139.988 0.87 2507.20ns
never 28.58ns 37.08 0.77 874.57ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 120.78ns 220.028 0.55 2469.64ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 1.61ns 1.55119 1.04 402.70ns
re-schedule 10 times 130.16ns 130.216 1.00 434.57ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 66.77ns 78.496 0.85 2350.91ns
just send variadic 98.99ns 115.978 0.85 2436.60ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 217.67ns 308.62 0.71 1441.71ns
sending of values from observable via last to subscriber 3.11ns 4.06296 0.77 3.32ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 96.68ns 103.393 0.94 988.19ns
sending of values from observable via map to subscriber 3.62ns 3.86582 0.94 7.23ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 2618.00ns 3824.38 0.68 11035.00ns
merge_with 3400.00ns 7603.0 0.45 11811.30ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 608.77ns 951.452 0.64 6106.00ns
sending of values from observable via observe_on to subscriber 61.53ns 78.7946 0.78 818.26ns

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 619.56ns 950.759 0.65 1847.15ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 22.47ns 27.4462 0.82 29.25ns
on_error 2.46ns 3.4871 0.71 19.67ns
on_completed 2.89ns 2.8835 1.00 0.81ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 334.07ns 536.694 0.62 618.91ns
get_observable 30.89ns 34.3681 0.90 157.44ns
get_subscriber 61.42ns 66.1165 0.93 99.89ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 5861.00ns 10852.2 0.54 11191.70ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 167.33ns 273.598 0.61 1255.86ns
sending of values from observable via scan to subscriber 5.72ns 11.0977 0.52 8.71ns

single-threaded locks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no-lock increment 2.78ns 3.07383 0.90 .
mutex lock increment 42.49ns 33.9829 1.25 .
spin-lock increment 10.48ns 12.7666 0.82 .

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 172.99ns 242.42 0.71 1579.50ns
sending of values from observable via skip to subscriber 3.61ns 4.24882 0.85 3.68ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 3391.38ns 5868.83 0.58 11930.00ns
sending of values from observable via switch_on_next to subscriber 835.20ns 1341.36 0.62 3045.00ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 226.58ns 360.513 0.63 2141.50ns
sending of values from observable via take to subscriber 5.56ns 6.37523 0.87 5.73ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 307.87ns 600.491 0.51 2394.10ns
sending of values from observable via take_last to subscriber 4.49ns 4.93617 0.91 19.75ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 1578.69ns 2342.15 0.67 5260.20ns
sending of values from observable via take_until to subscriber 12.55ns 14.51 0.86 4.91ns

timeout

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
timeout construction from observable via dot + subscribe with run_loop 1356.00ns 1995.13 0.68 5591.50ns
sending of values from observable via timeout to subscriber with unreachable timeout interval with run_loop 58.33ns 72.3556 0.81 1428.67ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 20.07ns 22.2223 0.90 589.26ns
re-schedule 10 times 143.88ns 141.177 1.02 625.56ns
recursively schedule 10 times 3857.09ns 3725.0 1.04 19465.00ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 2926.00ns 4393.86 0.67 9438.33ns
sending of values from observable via window to subscriber 823.97ns 1268.96 0.65 1576.69ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 1897.00ns 3229.11 0.59 3828.00ns
sending of values from observable via with_latest_from to subscriber 36.59ns 42.898 0.85 7.01ns

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

0.0% 0.0% Coverage
0.0% 0.0% Duplication

@AlexInLog AlexInLog merged commit 8b73c31 into main Nov 25, 2022
@AlexInLog AlexInLog deleted the macos_support branch November 25, 2022 20:57
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.

macOS/clang support

1 participant