Skip to content

Commit

Permalink
Update Readme.md
Browse files Browse the repository at this point in the history
  • Loading branch information
victimsnino committed Apr 6, 2023
1 parent 30ea75e commit 8b8401e
Showing 1 changed file with 3 additions and 0 deletions.
3 changes: 3 additions & 0 deletions Readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ ReactivePlusPlus is reactive programming library for C++ language inspired by "o
See the [BUILDING](BUILDING.md) document to know how to build RPP.
If you are going to know more details about developing for RPP check [HACKING](HACKING.md) document.

## Note:
Curretnly I'm working on RPP v2 (`v2` branch). It follows "zero-overhead principle" and minimizes overhead during usage of RPP.

## Implementation status:

In short: ReactivePlusPlus is library for building asynchronous event-driven streams of data with help of sequences of primitive operators in the declarative form.
Expand Down

1 comment on commit 8b8401e

@github-actions
Copy link
Contributor

Choose a reason for hiding this comment

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

BENCHMARK RESULTS (AUTOGENERATED)

ci-macos

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 0.28ns 0.278277 1.01 0.27ns
Dynamic observable construction 70.62ns 67.4226 1.05 99.48ns
Specific observable construction + as_dynamic 71.32ns 71.3531 1.00 102.58ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 138.12ns 139.225 0.99 1026.66ns
Specific observable lift dynamic observer 153.57ns 153.065 1.00 1037.17ns
Dynamic observable lift specific observer 233.13ns 250.175 0.93 1217.58ns
Dynamic observable lift dynamic observer 212.25ns 206.847 1.03 1142.77ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 120.18ns 165.94 0.72 1051.16ns
Specific observable subscribe dynamic observer 118.96ns 140.838 0.84 1047.01ns
Dynamic observable subscribe specific observer 219.27ns 208.485 1.05 1169.86ns
Dynamic observable subscribe dynamic observer 162.49ns 167.578 0.97 1090.92ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 96.07ns 100.283 0.96 1027.11ns
Dynamic observable subscribe lambda 199.70ns 198.401 1.01 1122.11ns
Specific observable subscribe lambda without subscription 94.05ns 105.604 0.89 1029.75ns
Dynamic observable subscribe lambda without subscription 221.19ns 201.392 1.10 1145.22ns
Specific observable subscribe specific subscriber 28.65ns 29.2947 0.98 736.65ns
Dynamic observable subscribe specific subscriber 128.12ns 137.799 0.93 895.58ns
Specific observable subscribe dynamic observer 29.10ns 30.2991 0.96 794.61ns
Dynamic observable subscribe dynamic observer 67.55ns 67.1342 1.01 812.12ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.27ns 0.284668 0.95 0.26ns
Dynamic observer construction 69.09ns 76.5978 0.90 92.14ns
Specific observer construction + as_dynamic 72.34ns 72.744 0.99 96.44ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.76ns 0.784928 0.96 0.74ns
Dynamic observer OnNext 2.08ns 2.16088 0.96 2.09ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 69.91ns 72.2442 0.97 286.89ns
Make copy of subscriber 11.71ns 12.168 0.96 27.34ns
Transform subsriber to dynamic 80.66ns 85.0958 0.95 119.36ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 77.17ns 69.3401 1.11 275.05ns
composite_subscription add 53.48ns 54.7599 0.98 100.22ns
composite_subscription unsubscribe 74.35ns 66.8011 1.11 76.52ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 1263.49ns 1211.65 1.04 3081.71ns
sending of values from observable via buffer to subscriber 5.72ns 6.5678 0.87 82.86ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 212.86ns 227.184 0.94 1289.06ns
long stateful chain creation + subscribe 503.90ns 541.099 0.93 2442.32ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 1308.46ns 1328.66 0.98 .
sending of values from observable via combine_latest to subscriber 21.82ns 22.9027 0.95 .

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 4151.59ns 4843.78 0.86 8740.51ns
concat_with 3991.82ns 4523.36 0.88 10233.80ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 157.98ns 163.99 0.96 853.94ns
sending of values from observable via distinct_until_changed to subscriber 2.16ns 2.22891 0.97 1.05ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 214.13ns 204.74 1.05 2047.53ns
sending of values from observable via first to subscriber 0.54ns 0.720555 0.74 1.04ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 59.91ns 61.4832 0.97 2009.74ns
error 106.17ns 106.629 1.00 2202.03ns
never 30.42ns 31.9261 0.95 789.98ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 600.32ns 630.128 0.95 2145.79ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 1.90ns 2.11552 0.90 355.05ns
re-schedule 10 times 25.09ns 26.8269 0.94 401.11ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 427.10ns 465.037 0.92 2084.58ns
just send variadic 1653.51ns 1748.96 0.95 2214.15ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 286.20ns 283.001 1.01 1233.49ns
sending of values from observable via last to subscriber 3.49ns 4.51162 0.77 1.24ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 63.78ns 66.2364 0.96 839.71ns
sending of values from observable via map to subscriber 1.05ns 1.10387 0.95 1.40ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 3988.44ns 4926.28 0.81 9051.83ns
merge_with 3942.39ns 4183.95 0.94 10404.70ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 1176.79ns 1192.19 0.99 9227.80ns
sending of values from observable via observe_on to subscriber 206.32ns 220.103 0.94 751.73ns

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 534.95ns 604.269 0.89 1415.83ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 20.02ns 20.3591 0.98 26.91ns
on_error 0.53ns 0.588421 0.90 16.23ns
on_completed 0.53ns 0.584699 0.91 2.12ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 321.64ns 333.844 0.96 488.36ns
get_observable 25.69ns 28.8843 0.89 149.34ns
get_subscriber 51.23ns 68.9819 0.74 76.23ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 5248.63ns 5947.47 0.88 9008.17ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 141.96ns 141.151 1.01 1068.17ns
sending of values from observable via scan to subscriber 5.24ns 5.51802 0.95 1.87ns

single-threaded locks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no-lock increment 1.82ns 2.10093 0.87 .
mutex lock increment 22.13ns 24.7116 0.90 .
spin-lock increment 8.00ns 8.85592 0.90 .

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 135.22ns 140.953 0.96 1346.25ns
sending of values from observable via skip to subscriber 2.17ns 2.27761 0.95 1.76ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 4620.88ns 4700.26 0.98 9880.65ns
sending of values from observable via switch_on_next to subscriber 903.11ns 972.804 0.93 2406.13ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 188.19ns 214.91 0.88 1702.11ns
sending of values from observable via take to subscriber 2.78ns 2.90839 0.96 5.19ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 293.93ns 322.944 0.91 1958.58ns
sending of values from observable via take_last to subscriber 2.65ns 3.06758 0.86 4.82ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 2358.55ns 2368.47 1.00 6546.07ns
sending of values from observable via take_until to subscriber 7.69ns 8.49024 0.91 2.18ns

timeout

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
timeout construction from observable via dot + subscribe with run_loop 5688.54ns 6267.93 0.91 4001.24ns
sending of values from observable via timeout to subscriber with unreachable timeout interval with run_loop 65.54ns 69.6232 0.94 871.53ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 29.51ns 31.0674 0.95 549.18ns
re-schedule 10 times 95.53ns 89.6682 1.07 598.97ns
recursively schedule 10 times 1928.46ns 2082.3 0.93 15441.50ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 3945.80ns 4242.79 0.93 7532.69ns
sending of values from observable via window to subscriber 808.95ns 890.366 0.91 1370.21ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 1540.98ns 1634.49 0.94 .
sending of values from observable via with_latest_from to subscriber 21.42ns 22.8234 0.94 .

ci-ubuntu-clang

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 0.39ns 0.608853 0.64 0.38ns
Dynamic observable construction 22.54ns 20.2458 1.11 33.34ns
Specific observable construction + as_dynamic 20.92ns 18.9632 1.10 32.64ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 56.48ns 55.1445 1.02 382.67ns
Specific observable lift dynamic observer 53.74ns 57.2713 0.94 417.82ns
Dynamic observable lift specific observer 100.37ns 91.9873 1.09 453.12ns
Dynamic observable lift dynamic observer 89.08ns 76.7685 1.16 345.31ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 44.42ns 37.417 1.19 362.17ns
Specific observable subscribe dynamic observer 40.61ns 41.2511 0.98 350.36ns
Dynamic observable subscribe specific observer 84.67ns 76.0147 1.11 346.31ns
Dynamic observable subscribe dynamic observer 66.44ns 69.0467 0.96 405.30ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 44.06ns 36.9319 1.19 307.60ns
Dynamic observable subscribe lambda 76.15ns 68.1212 1.12 396.84ns
Specific observable subscribe lambda without subscription 38.06ns 41.6663 0.91 366.56ns
Dynamic observable subscribe lambda without subscription 72.07ns 68.7862 1.05 409.52ns
Specific observable subscribe specific subscriber 13.45ns 12.1097 1.11 286.29ns
Dynamic observable subscribe specific subscriber 47.86ns 41.4882 1.15 364.23ns
Specific observable subscribe dynamic observer 13.31ns 13.238 1.01 327.86ns
Dynamic observable subscribe dynamic observer 38.62ns 40.747 0.95 325.79ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.35ns 0.342673 1.03 0.40ns
Dynamic observer construction 21.36ns 23.7464 0.90 27.19ns
Specific observer construction + as_dynamic 17.97ns 19.3366 0.93 26.94ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.77ns 0.722194 1.06 0.78ns
Dynamic observer OnNext 2.31ns 1.99109 1.16 2.62ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 22.01ns 24.8834 0.88 62.37ns
Make copy of subscriber 7.47ns 7.79454 0.96 9.21ns
Transform subsriber to dynamic 24.32ns 21.3566 1.14 31.34ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 22.93ns 22.3531 1.03 70.42ns
composite_subscription add 17.41ns 22.6635 0.77 112.54ns
composite_subscription unsubscribe 34.73ns 34.8622 1.00 30.35ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 820.33ns 818.002 1.00 1880.70ns
sending of values from observable via buffer to subscriber 5.43ns 6.82709 0.79 25.15ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 110.15ns 124.847 0.88 638.91ns
long stateful chain creation + subscribe 131.32ns 164.61 0.80 1839.78ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 457.66ns 506.059 0.90 .
sending of values from observable via combine_latest to subscriber 9.32ns 10.3618 0.90 .

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 1908.64ns 1976.54 0.97 3395.50ns
concat_with 1876.20ns 1770.83 1.06 3860.68ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 62.77ns 53.7955 1.17 365.54ns
sending of values from observable via distinct_until_changed to subscriber 1.89ns 2.09443 0.90 1.55ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 88.67ns 76.7377 1.16 774.23ns
sending of values from observable via first to subscriber 0.38ns 0.36582 1.05 1.06ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 35.60ns 39.9658 0.89 791.52ns
error 84.36ns 86.9561 0.97 906.25ns
never 16.67ns 16.995 0.98 289.46ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 268.73ns 294.279 0.91 834.80ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 0.74ns 0.781644 0.94 136.28ns
re-schedule 10 times 7.91ns 11.4758 0.69 168.69ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 235.24ns 207.953 1.13 783.07ns
just send variadic 1343.89ns 1881.09 0.71 864.54ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 133.02ns 125.574 1.06 501.07ns
sending of values from observable via last to subscriber 2.36ns 2.91951 0.81 1.61ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 35.04ns 34.0301 1.03 323.56ns
sending of values from observable via map to subscriber 0.94ns 0.895759 1.05 2.39ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 1835.60ns 1857.38 0.99 3401.52ns
merge_with 1870.40ns 1715.06 1.09 3790.56ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 634.86ns 567.81 1.12 3075.38ns
sending of values from observable via observe_on to subscriber 149.63ns 137.707 1.09 273.13ns

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 277.79ns 281.136 0.99 1073.27ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 19.01ns 22.7624 0.84 15.98ns
on_error 1.03ns 0.837816 1.23 18.41ns
on_completed 1.18ns 0.700909 1.68 0.76ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 136.00ns 131.566 1.03 178.23ns
get_observable 8.15ns 8.44269 0.96 54.02ns
get_subscriber 21.60ns 31.1785 0.69 20.76ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 2587.18ns 2631.26 0.98 3553.93ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 49.37ns 49.8592 0.99 313.65ns
sending of values from observable via scan to subscriber 1.91ns 2.18369 0.88 2.61ns

single-threaded locks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no-lock increment 2.02ns 2.51484 0.80 .
mutex lock increment 9.16ns 8.58341 1.07 .
spin-lock increment 9.97ns 14.0877 0.71 .

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 52.02ns 52.4385 0.99 503.46ns
sending of values from observable via skip to subscriber 1.95ns 2.84544 0.68 2.10ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 2143.08ns 1879.22 1.14 3790.11ns
sending of values from observable via switch_on_next to subscriber 5045.08ns 6468.38 0.78 988.39ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 98.00ns 97.2687 1.01 654.55ns
sending of values from observable via take to subscriber 2.77ns 2.63801 1.05 3.42ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 125.95ns 136.415 0.92 683.58ns
sending of values from observable via take_last to subscriber 2.80ns 3.1998 0.88 4.46ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 1014.53ns 861.068 1.18 1708.24ns
sending of values from observable via take_until to subscriber 10.02ns 10.7832 0.93 2.89ns

timeout

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
timeout construction from observable via dot + subscribe with run_loop 910.90ns 939.578 0.97 18232.40ns
sending of values from observable via timeout to subscriber with unreachable timeout interval with run_loop 49.49ns 49.9015 0.99 16401.80ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 7.72ns 9.49611 0.81 198.28ns
re-schedule 10 times 31.92ns 27.6192 1.16 242.70ns
recursively schedule 10 times 1630.16ns 1653.3 0.99 9733.81ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 1782.29ns 1682.77 1.06 3327.96ns
sending of values from observable via window to subscriber 311.32ns 314.174 0.99 471.13ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 647.46ns 554.344 1.17 .
sending of values from observable via with_latest_from to subscriber 9.83ns 9.19406 1.07 .

ci-ubuntu-gcc

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 0.40ns 0.401295 1.00 0.40ns
Dynamic observable construction 30.06ns 29.9987 1.00 55.52ns
Specific observable construction + as_dynamic 29.05ns 28.9341 1.00 56.78ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 96.47ns 96.9465 1.00 755.40ns
Specific observable lift dynamic observer 129.28ns 128.699 1.00 814.95ns
Dynamic observable lift specific observer 190.49ns 189.569 1.00 880.00ns
Dynamic observable lift dynamic observer 205.47ns 205.852 1.00 847.19ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 59.07ns 59.9751 0.98 725.16ns
Specific observable subscribe dynamic observer 76.81ns 76.6806 1.00 751.90ns
Dynamic observable subscribe specific observer 132.68ns 131.887 1.01 814.27ns
Dynamic observable subscribe dynamic observer 133.79ns 131.7 1.02 771.82ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 61.01ns 59.0538 1.03 744.20ns
Dynamic observable subscribe lambda 130.06ns 128.915 1.01 811.57ns
Specific observable subscribe lambda without subscription 59.49ns 58.8996 1.01 735.52ns
Dynamic observable subscribe lambda without subscription 130.85ns 128.762 1.02 824.22ns
Specific observable subscribe specific subscriber 27.42ns 26.9388 1.02 625.69ns
Dynamic observable subscribe specific subscriber 99.71ns 98.6858 1.01 731.93ns
Specific observable subscribe dynamic observer 27.40ns 27.3306 1.00 654.63ns
Dynamic observable subscribe dynamic observer 91.33ns 91.0613 1.00 668.53ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.40ns 0.401893 1.00 0.40ns
Dynamic observer construction 28.90ns 28.9253 1.00 45.19ns
Specific observer construction + as_dynamic 29.06ns 28.9525 1.00 48.85ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.42ns 0.42533 0.98 0.42ns
Dynamic observer OnNext 1.61ns 1.6072 1.00 2.01ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 33.52ns 33.9177 0.99 137.32ns
Make copy of subscriber 16.08ns 16.0501 1.00 30.96ns
Transform subsriber to dynamic 45.09ns 45.4555 0.99 76.74ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 34.06ns 33.9125 1.00 140.35ns
composite_subscription add 51.97ns 51.6351 1.01 118.63ns
composite_subscription unsubscribe 46.02ns 45.5313 1.01 38.38ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 974.71ns 979.926 0.99 2942.91ns
sending of values from observable via buffer to subscriber 6.37ns 6.12912 1.04 29.09ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 328.22ns 325.805 1.01 1414.61ns
long stateful chain creation + subscribe 451.44ns 453.595 1.00 4521.74ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 888.94ns 857.867 1.04 .
sending of values from observable via combine_latest to subscriber 7.48ns 7.37351 1.01 .

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 3098.24ns 3108.97 1.00 7864.25ns
concat_with 2862.04ns 2881.7 0.99 8554.25ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 123.11ns 120.548 1.02 760.23ns
sending of values from observable via distinct_until_changed to subscriber 2.42ns 2.40978 1.00 1.41ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 177.65ns 175.159 1.01 1762.82ns
sending of values from observable via first to subscriber 1.21ns 1.20587 1.00 0.71ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 68.40ns 67.5826 1.01 1836.53ns
error 117.46ns 116.563 1.01 1905.44ns
never 29.21ns 29.6256 0.99 657.09ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 331.36ns 330.918 1.00 1861.59ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 1.19ns 1.18065 1.01 301.34ns
re-schedule 10 times 20.26ns 20.1899 1.00 334.68ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 307.19ns 306.591 1.00 1858.34ns
just send variadic 1449.33ns 1457.89 0.99 1894.49ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 210.06ns 211.3 0.99 1056.72ns
sending of values from observable via last to subscriber 2.81ns 2.7292 1.03 1.21ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 89.19ns 79.235 1.13 770.92ns
sending of values from observable via map to subscriber 0.99ns 1.04759 0.94 1.61ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 3079.14ns 3075.07 1.00 9736.99ns
merge_with 2855.67ns 2868.43 1.00 9591.99ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 819.03ns 826.705 0.99 3324.98ns
sending of values from observable via observe_on to subscriber 156.98ns 156.834 1.00 540.01ns

on_error_resume_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_error_resume_next construction from observable via dot + subscribe 460.73ns 458.995 1.00 1582.23ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 29.36ns 29.7176 0.99 13.48ns
on_error 0.81ns 0.808379 1.00 23.87ns
on_completed 0.81ns 0.808437 1.00 1.21ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 217.59ns 214.34 1.02 384.62ns
get_observable 30.64ns 33.342 0.92 103.46ns
get_subscriber 66.36ns 64.9863 1.02 99.90ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 4400.72ns 4396.52 1.00 7367.16ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 114.65ns 113.08 1.01 953.25ns
sending of values from observable via scan to subscriber 2.01ns 2.01064 1.00 1.60ns

single-threaded locks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no-lock increment 2.23ns 2.26212 0.99 .
mutex lock increment 6.53ns 6.68815 0.98 .
spin-lock increment 10.43ns 10.4469 1.00 .

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 113.85ns 112.302 1.01 1153.21ns
sending of values from observable via skip to subscriber 2.41ns 2.41114 1.00 2.71ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 3287.11ns 3322.52 0.99 11275.00ns
sending of values from observable via switch_on_next to subscriber 835.92ns 839.045 1.00 3138.28ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 177.60ns 175.754 1.01 1429.71ns
sending of values from observable via take to subscriber 3.62ns 3.6207 1.00 2.85ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 212.48ns 214.36 0.99 1462.38ns
sending of values from observable via take_last to subscriber 2.85ns 2.87922 0.99 7.23ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 1662.22ns 1717.43 0.97 3669.55ns
sending of values from observable via take_until to subscriber 10.47ns 10.4407 1.00 2.05ns

timeout

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
timeout construction from observable via dot + subscribe with run_loop 1132.86ns 1131.27 1.00 13365.60ns
sending of values from observable via timeout to subscriber with unreachable timeout interval with run_loop 63.15ns 63.1624 1.00 2265.83ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 19.66ns 19.5451 1.01 391.22ns
re-schedule 10 times 41.85ns 41.1212 1.02 421.42ns
recursively schedule 10 times 1471.67ns 1411.56 1.04 20419.50ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 2831.00ns 2806.97 1.01 6110.20ns
sending of values from observable via window to subscriber 565.17ns 562.466 1.00 985.23ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 1065.31ns 1071.87 0.99 .
sending of values from observable via with_latest_from to subscriber 8.48ns 8.48514 1.00 .

ci-windows

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 1.50ns 1.80591 0.83 0.73ns
Dynamic observable construction 81.39ns 89.0225 0.91 122.90ns
Specific observable construction + as_dynamic 81.41ns 95.9938 0.85 122.31ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 144.02ns 172.873 0.83 1211.86ns
Specific observable lift dynamic observer 179.01ns 213.541 0.84 1246.19ns
Dynamic observable lift specific observer 286.10ns 348.231 0.82 1394.89ns
Dynamic observable lift dynamic observer 239.64ns 287.193 0.83 1301.40ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 120.61ns 135.415 0.89 1167.23ns
Specific observable subscribe dynamic observer 129.45ns 157.919 0.82 1204.27ns
Dynamic observable subscribe specific observer 229.63ns 267.195 0.86 1351.15ns
Dynamic observable subscribe dynamic observer 179.43ns 213.9 0.84 1244.10ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 110.12ns 121.93 0.90 1162.91ns
Dynamic observable subscribe lambda 231.50ns 283.193 0.82 1348.58ns
Specific observable subscribe lambda without subscription 109.94ns 133.179 0.83 1169.18ns
Dynamic observable subscribe lambda without subscription 228.89ns 270.983 0.84 1338.79ns
Specific observable subscribe specific subscriber 30.47ns 36.579 0.83 841.48ns
Dynamic observable subscribe specific subscriber 148.72ns 198.424 0.75 1008.69ns
Specific observable subscribe dynamic observer 30.50ns 36.5554 0.83 875.41ns
Dynamic observable subscribe dynamic observer 78.71ns 90.5934 0.87 908.25ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 1.50ns 1.79388 0.84 1.50ns
Dynamic observer construction 83.57ns 97.3115 0.86 113.46ns
Specific observer construction + as_dynamic 82.67ns 90.1733 0.92 113.41ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.68ns 0.756542 0.90 0.70ns
Dynamic observer OnNext 1.68ns 2.00869 0.83 2.01ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 84.06ns 95.8344 0.88 350.31ns
Make copy of subscriber 16.72ns 19.9891 0.84 31.07ns
Transform subsriber to dynamic 97.40ns 114.793 0.85 149.91ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 84.03ns 102.35 0.82 342.28ns
composite_subscription add 71.04ns 80.9667 0.88 165.07ns
composite_subscription unsubscribe 62.92ns 78.2973 0.80 144.64ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 1067.33ns 1487.74 0.72 4507.00ns
sending of values from observable via buffer to subscriber 6.46ns 7.71513 0.84 92.72ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 270.77ns 325.807 0.83 1722.86ns
long stateful chain creation + subscribe 655.19ns 793.789 0.83 3174.50ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 1658.57ns 1991.47 0.83 .
sending of values from observable via combine_latest to subscriber 35.13ns 41.4867 0.85 .

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 4126.57ns 4889.43 0.84 10662.30ns
concat_with 4312.83ns 5112.57 0.84 11611.30ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 185.07ns 326.634 0.57 1049.24ns
sending of values from observable via distinct_until_changed to subscriber 3.34ns 4.06532 0.82 4.18ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 221.82ns 267.311 0.83 2642.20ns
sending of values from observable via first to subscriber 2.26ns 2.44756 0.92 1.57ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 63.61ns 75.9286 0.84 2368.55ns
error 112.18ns 138.536 0.81 2709.70ns
never 31.04ns 38.1097 0.81 885.92ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 516.30ns 622.659 0.83 2460.27ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 1.68ns 2.0809 0.81 407.12ns
re-schedule 10 times 97.96ns 122.677 0.80 435.49ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 376.58ns 509.509 0.74 2406.73ns
just send variadic 1306.21ns 1561.61 0.84 2466.70ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 312.53ns 374.645 0.83 1432.24ns
sending of values from observable via last to subscriber 4.20ns 5.02939 0.84 3.75ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 87.94ns 104.437 0.84 990.08ns
sending of values from observable via map to subscriber 3.51ns 4.21433 0.83 7.53ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 3948.29ns 6298.43 0.63 10917.70ns
merge_with 4160.43ns 5766.43 0.72 11670.00ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 1335.20ns 1395.55 0.96 5705.20ns
sending of values from observable via observe_on to subscriber 200.22ns 242.206 0.83 851.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 640.74ns 755.35 0.85 1811.54ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 19.89ns 24.0813 0.83 32.45ns
on_error 2.71ns 3.06082 0.89 18.48ns
on_completed 2.70ns 3.31645 0.82 1.36ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 367.89ns 444.569 0.83 742.18ns
get_observable 26.07ns 31.3414 0.83 163.32ns
get_subscriber 50.20ns 60.66 0.83 91.63ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 6000.00ns 8090.0 0.74 11267.70ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 191.49ns 330.828 0.58 1242.67ns
sending of values from observable via scan to subscriber 5.42ns 6.28773 0.86 9.23ns

single-threaded locks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no-lock increment 1.87ns 2.28225 0.82 .
mutex lock increment 25.89ns 38.8199 0.67 .
spin-lock increment 10.43ns 10.8386 0.96 .

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 175.50ns 209.51 0.84 1544.13ns
sending of values from observable via skip to subscriber 3.35ns 4.02433 0.83 3.38ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 4714.50ns 5377.0 0.88 11937.00ns
sending of values from observable via switch_on_next to subscriber 1102.10ns 1318.48 0.84 3073.33ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 874.40ns 274.063 3.19 2176.00ns
sending of values from observable via take to subscriber 5.47ns 6.5601 0.83 5.53ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 322.07ns 613.108 0.53 2428.73ns
sending of values from observable via take_last to subscriber 4.25ns 5.20987 0.82 20.77ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 2299.55ns 2733.0 0.84 5239.20ns
sending of values from observable via take_until to subscriber 11.46ns 14.1184 0.81 5.05ns

timeout

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
timeout construction from observable via dot + subscribe with run_loop 1650.15ns 2148.93 0.77 5577.00ns
sending of values from observable via timeout to subscriber with unreachable timeout interval with run_loop 60.67ns 70.0732 0.87 1346.00ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 20.25ns 24.8436 0.82 611.64ns
re-schedule 10 times 121.76ns 146.408 0.83 734.38ns
recursively schedule 10 times 2678.70ns 3285.8 0.82 18660.50ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 3649.29ns 4395.75 0.83 9743.00ns
sending of values from observable via window to subscriber 830.29ns 995.125 0.83 1629.38ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 2451.00ns 2581.17 0.95 .
sending of values from observable via with_latest_from to subscriber 27.79ns 33.0368 0.84 .

Please sign in to comment.