Skip to content

Speedup repeat#197

Merged
AlexInLog merged 2 commits into
mainfrom
speedup_repeat
Jul 29, 2022
Merged

Speedup repeat#197
AlexInLog merged 2 commits into
mainfrom
speedup_repeat

Conversation

@AlexInLog

Copy link
Copy Markdown
Owner

No description provided.

@codecov

codecov Bot commented Jul 29, 2022

Copy link
Copy Markdown

Codecov Report

Merging #197 (35fe7eb) into main (20ec8be) will decrease coverage by 0.00%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main     #197      +/-   ##
==========================================
- Coverage   99.70%   99.70%   -0.01%     
==========================================
  Files          79       79              
  Lines        1017     1016       -1     
==========================================
- Hits         1014     1013       -1     
  Misses          3        3              
Impacted Files Coverage Δ
src/rpp/rpp/operators/repeat.hpp 100.00% <100.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us.

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

0.0% 0.0% Coverage
0.0% 0.0% Duplication

@github-actions

Copy link
Copy Markdown
Contributor

Linux CLANG

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 0.42ns 0.335168 1.25 0.42ns
Dynamic observable construction 39.28ns 29.1679 1.35 30.51ns
Specific observable construction + as_dynamic 36.48ns 29.1593 1.25 30.16ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 88.91ns 70.8637 1.25 362.78ns
Specific observable lift dynamic observer 118.51ns 94.7397 1.25 385.18ns
Dynamic observable lift specific observer 198.33ns 157.426 1.26 416.40ns
Dynamic observable lift dynamic observer 204.30ns 163.565 1.25 404.38ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 56.53ns 45.1318 1.25 357.20ns
Specific observable subscribe dynamic observer 72.80ns 58.3031 1.25 374.07ns
Dynamic observable subscribe specific observer 140.18ns 112.237 1.25 409.54ns
Dynamic observable subscribe dynamic observer 136.84ns 109.457 1.25 394.33ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 60.70ns 48.5628 1.25 358.85ns
Dynamic observable subscribe lambda 143.72ns 122.868 1.17 408.69ns
Specific observable subscribe lambda without subscription 60.71ns 48.5467 1.25 355.67ns
Dynamic observable subscribe lambda without subscription 143.48ns 122.686 1.17 404.51ns
Specific observable subscribe specific subscriber 20.96ns 16.7397 1.25 280.78ns
Dynamic observable subscribe specific subscriber 98.36ns 78.6334 1.25 329.74ns
Specific observable subscribe dynamic observer 20.92ns 16.7151 1.25 296.86ns
Dynamic observable subscribe dynamic observer 79.08ns 63.2581 1.25 323.17ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.84ns 0.669709 1.25 0.42ns
Dynamic observer construction 36.40ns 29.1384 1.25 26.96ns
Specific observer construction + as_dynamic 36.40ns 29.1394 1.25 27.45ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.84ns 0.670275 1.25 0.84ns
Dynamic observer OnNext 2.09ns 1.67573 1.25 3.35ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 45.62ns 38.0991 1.20 82.41ns
Make copy of subscriber 20.92ns 16.7319 1.25 5.86ns
Transform subsriber to dynamic 58.17ns 46.5503 1.25 34.33ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 45.63ns 36.4913 1.25 66.78ns
composite_subscription add 56.62ns 45.4184 1.25 26.17ns
composite_subscription unsubscribe 7.54ns 6.02464 1.25 12.14ns

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 21.74ns 17.3749 1.25 154.07ns
concat_with 98.92ns 79.1209 1.25 368.90ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 148.46ns 118.767 1.25 314.05ns
sending of values from observable via distinct_until_changed to subscriber 4.19ns 3.35347 1.25 2.93ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 20.95ns 16.7688 1.25 45.34ns
error 61.55ns 49.2305 1.25 97.22ns
never 20.92ns 16.7414 1.25 291.05ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 34.80ns 27.8195 1.25 74.69ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 20.97ns 16.766 1.25 46.12ns
just send variadic 20.98ns 16.7676 1.25 53.72ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 88.71ns 70.9606 1.25 303.02ns
sending of values from observable via map to subscriber 9.22ns 7.35528 1.25 1.91ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 21.76ns 17.4135 1.25 152.91ns
merge_with 99.22ns 79.4959 1.25 369.19ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 930.98ns 735.009 1.27 3143.13ns
sending of values from observable via observe_on to subscriber 174.20ns 143.678 1.21 251.85ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 30.55ns 24.4301 1.25 11.75ns
on_error 2.10ns 1.68372 1.25 23.95ns
on_completed 3.36ns 2.69303 1.25 0.84ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 210.46ns 171.456 1.23 227.46ns
get_observable 36.40ns 29.0694 1.25 62.02ns
get_subscriber 77.91ns 62.2668 1.25 16.89ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 23.09ns 47.4807 0.49 13.12ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 139.28ns 111.374 1.25 371.23ns
sending of values from observable via scan to subscriber 7.63ns 6.03584 1.26 2.51ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 1953.01ns 1582.53 1.23 3468.52ns
sending of values from observable via switch_on_next to subscriber 503.80ns 410.006 1.23 807.00ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 822.60ns 660.318 1.25 1341.97ns
sending of values from observable via with_latest_from to subscriber 30.12ns 24.0921 1.25 3.77ns

Linux GCC

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 0.37ns 0.334615 1.10 0.38ns
Dynamic observable construction 38.17ns 31.6794 1.20 26.46ns
Specific observable construction + as_dynamic 38.12ns 31.5215 1.21 26.03ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 106.29ns 89.094 1.19 407.69ns
Specific observable lift dynamic observer 144.45ns 119.614 1.21 427.49ns
Dynamic observable lift specific observer 202.82ns 169.639 1.20 476.48ns
Dynamic observable lift dynamic observer 213.56ns 181.639 1.18 443.83ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 56.67ns 47.2009 1.20 362.40ns
Specific observable subscribe dynamic observer 72.69ns 60.5992 1.20 404.83ns
Dynamic observable subscribe specific observer 142.38ns 123.361 1.15 406.48ns
Dynamic observable subscribe dynamic observer 139.28ns 121.55 1.15 417.72ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 57.48ns 48.5624 1.18 358.93ns
Dynamic observable subscribe lambda 144.11ns 123.415 1.17 450.88ns
Specific observable subscribe lambda without subscription 53.65ns 48.5527 1.11 384.24ns
Dynamic observable subscribe lambda without subscription 146.73ns 123.427 1.19 435.20ns
Specific observable subscribe specific subscriber 19.85ns 16.7333 1.19 333.16ns
Dynamic observable subscribe specific subscriber 99.02ns 83.04 1.19 373.73ns
Specific observable subscribe dynamic observer 19.44ns 16.7215 1.16 327.88ns
Dynamic observable subscribe dynamic observer 80.34ns 68.4251 1.17 322.47ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.40ns 0.334963 1.20 0.36ns
Dynamic observer construction 35.10ns 31.4866 1.11 24.15ns
Specific observer construction + as_dynamic 37.69ns 31.4686 1.20 21.27ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.37ns 0.334703 1.11 0.40ns
Dynamic observer OnNext 2.01ns 2.00953 1.00 1.84ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 41.15ns 37.571 1.10 69.10ns
Make copy of subscriber 18.76ns 16.739 1.12 5.38ns
Transform subsriber to dynamic 53.86ns 46.6587 1.15 28.92ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 36.73ns 30.8947 1.19 66.22ns
composite_subscription add 55.74ns 45.1468 1.23 21.40ns
composite_subscription unsubscribe 9.57ns 8.36365 1.14 13.26ns

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 21.34ns 17.7257 1.20 164.25ns
concat_with 101.87ns 87.2804 1.17 403.38ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 148.21ns 125.727 1.18 422.70ns
sending of values from observable via distinct_until_changed to subscriber 6.18ns 5.68781 1.09 2.09ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 19.24ns 16.7513 1.15 55.08ns
error 56.67ns 49.164 1.15 98.15ns
never 19.56ns 16.7294 1.17 331.60ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 33.44ns 29.8034 1.12 81.52ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 20.12ns 16.7592 1.20 49.11ns
just send variadic 19.88ns 16.7896 1.18 38.64ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 86.84ns 72.2776 1.20 427.78ns
sending of values from observable via map to subscriber 5.98ns 4.35491 1.37 3.22ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 20.87ns 17.4395 1.20 167.09ns
merge_with 92.16ns 86.1746 1.07 412.74ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 893.65ns 797.484 1.12 3127.96ns
sending of values from observable via observe_on to subscriber 169.76ns 146.79 1.16 284.23ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 28.15ns 23.4212 1.20 13.12ns
on_error 3.13ns 3.34431 0.94 20.31ns
on_completed 3.54ns 2.69439 1.31 0.81ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 212.40ns 171.849 1.24 212.98ns
get_observable 35.71ns 29.5515 1.21 54.99ns
get_subscriber 65.05ns 60.5778 1.07 17.82ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 21.65ns 48.2848 0.45 24.31ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 144.45ns 116.177 1.24 447.52ns
sending of values from observable via scan to subscriber 4.80ns 4.35438 1.10 1.88ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 1874.04ns 1667.03 1.12 5099.10ns
sending of values from observable via switch_on_next to subscriber 522.81ns 431.806 1.21 1289.72ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 852.25ns 706.608 1.21 1650.37ns
sending of values from observable via with_latest_from to subscriber 30.40ns 25.7694 1.18 5.57ns

Windows MSVC

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 1.51ns 1.74119 0.87 0.67ns
Dynamic observable construction 81.80ns 83.343 0.98 124.65ns
Specific observable construction + as_dynamic 81.74ns 81.5801 1.00 124.74ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 144.53ns 137.995 1.05 1207.18ns
Specific observable lift dynamic observer 168.42ns 169.46 0.99 1635.71ns
Dynamic observable lift specific observer 267.83ns 266.177 1.01 1399.58ns
Dynamic observable lift dynamic observer 224.60ns 223.044 1.01 1302.50ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 104.37ns 103.907 1.00 1170.41ns
Specific observable subscribe dynamic observer 116.77ns 119.873 0.97 1206.32ns
Dynamic observable subscribe specific observer 215.94ns 217.129 0.99 1354.11ns
Dynamic observable subscribe dynamic observer 160.13ns 168.545 0.95 1240.86ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 103.70ns 104.057 1.00 1177.26ns
Dynamic observable subscribe lambda 217.26ns 250.222 0.87 1342.53ns
Specific observable subscribe lambda without subscription 103.81ns 104.405 0.99 1167.90ns
Dynamic observable subscribe lambda without subscription 216.83ns 217.94 0.99 1384.68ns
Specific observable subscribe specific subscriber 16.74ns 16.7464 1.00 863.55ns
Dynamic observable subscribe specific subscriber 130.66ns 132.837 0.98 1027.62ns
Specific observable subscribe dynamic observer 16.83ns 16.8409 1.00 878.47ns
Dynamic observable subscribe dynamic observer 66.91ns 64.4545 1.04 915.31ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.67ns 0.670899 1.00 1.51ns
Dynamic observer construction 83.12ns 81.8786 1.02 115.00ns
Specific observer construction + as_dynamic 86.20ns 81.4217 1.06 115.08ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.67ns 0.670125 1.00 0.67ns
Dynamic observer OnNext 2.01ns 2.01827 1.00 2.02ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 87.04ns 89.0456 0.98 348.15ns
Make copy of subscriber 16.73ns 16.7566 1.00 31.59ns
Transform subsriber to dynamic 96.57ns 96.0974 1.00 154.71ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 87.22ns 87.8304 0.99 339.43ns
composite_subscription add 103.58ns 75.7904 1.37 63.91ns
composite_subscription unsubscribe 8.39ns 8.34339 1.01 25.81ns

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 33.16ns 34.8764 0.95 696.54ns
concat_with 312.22ns 306.37 1.02 1445.69ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 179.03ns 179.54 1.00 1025.23ns
sending of values from observable via distinct_until_changed to subscriber 4.36ns 4.38009 0.99 3.90ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 16.78ns 16.7872 1.00 193.92ns
error 47.02ns 47.19 1.00 212.25ns
never 16.72ns 16.798 1.00 840.06ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 83.84ns 84.3036 0.99 261.15ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 19.93ns 19.8442 1.00 198.61ns
just send variadic 20.92ns 21.0849 0.99 192.67ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 85.53ns 76.5105 1.12 992.58ns
sending of values from observable via map to subscriber 6.17ns 6.16535 1.00 6.29ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 34.80ns 34.8371 1.00 692.59ns
merge_with 317.25ns 305.396 1.04 1456.80ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 954.12ns 950.115 1.00 5721.20ns
sending of values from observable via observe_on to subscriber 150.28ns 146.415 1.03 851.21ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 20.22ns 20.6585 0.98 32.58ns
on_error 3.07ns 2.83386 1.08 17.47ns
on_completed 2.37ns 2.36474 1.00 0.68ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 294.98ns 294.719 1.00 593.36ns
get_observable 28.13ns 26.0285 1.08 159.77ns
get_subscriber 50.36ns 50.5059 1.00 94.16ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 27.06ns 114.044 0.24 94.47ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 168.29ns 169.613 0.99 1370.33ns
sending of values from observable via scan to subscriber 7.48ns 7.26886 1.03 8.87ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 2655.00ns 2679.0 0.99 12043.70ns
sending of values from observable via switch_on_next to subscriber 678.25ns 721.0 0.94 3096.67ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 1034.59ns 1030.64 1.00 3847.83ns
sending of values from observable via with_latest_from to subscriber 31.25ns 31.14 1.00 6.69ns

@AlexInLog AlexInLog merged commit 4583787 into main Jul 29, 2022
@AlexInLog AlexInLog deleted the speedup_repeat branch July 29, 2022 11:45
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