Skip to content

Fix IDE warning for std::make_shared on primitive types with clang - #178

Merged
AlexInLog merged 1 commit into
AlexInLog:mainfrom
tcw165:optimization/compile
Jul 16, 2022
Merged

Fix IDE warning for std::make_shared on primitive types with clang#178
AlexInLog merged 1 commit into
AlexInLog:mainfrom
tcw165:optimization/compile

Conversation

@tcw165

@tcw165 tcw165 commented Jul 15, 2022

Copy link
Copy Markdown
Contributor

I use CLion/VSCode and the parser of the IDE seems to be based on clang. However, not all the clang language servers make -fsized-deallocation as default compile-option. So the IDE complains about __builtin_operator_delete on std::make_shared(...).

Reference

  • CLion discussion on this topic, link.

@codecov

codecov Bot commented Jul 15, 2022

Copy link
Copy Markdown

Codecov Report

Merging #178 (cfe66c5) into main (90921f3) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main     #178   +/-   ##
=======================================
  Coverage   99.67%   99.67%           
=======================================
  Files          68       68           
  Lines         926      926           
=======================================
  Hits          923      923           
  Misses          3        3           

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 90921f3...cfe66c5. Read the comment docs.

@github-actions

github-actions Bot commented Jul 15, 2022

Copy link
Copy Markdown
Contributor

Linux CLANG

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 0.34ns 0.335304 1.00 0.34ns
Dynamic observable construction 29.17ns 28.4565 1.03 24.76ns
Specific observable construction + as_dynamic 29.22ns 28.5061 1.03 24.49ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 71.04ns 70.411 1.01 292.24ns
Specific observable lift dynamic observer 94.61ns 94.816 1.00 311.39ns
Dynamic observable lift specific observer 157.77ns 153.61 1.03 342.93ns
Dynamic observable lift dynamic observer 165.34ns 162.813 1.02 326.74ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 44.49ns 43.9003 1.01 289.09ns
Specific observable subscribe dynamic observer 59.67ns 59.0615 1.01 298.80ns
Dynamic observable subscribe specific observer 112.18ns 111.064 1.01 333.02ns
Dynamic observable subscribe dynamic observer 109.58ns 108.872 1.01 313.52ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 45.32ns 44.4734 1.02 289.63ns
Dynamic observable subscribe lambda 111.63ns 110.06 1.01 329.98ns
Specific observable subscribe lambda without subscription 45.25ns 44.559 1.02 288.39ns
Dynamic observable subscribe lambda without subscription 111.51ns 110.275 1.01 333.49ns
Specific observable subscribe specific subscriber 16.73ns 16.7579 1.00 227.87ns
Dynamic observable subscribe specific subscriber 78.68ns 78.014 1.01 268.93ns
Specific observable subscribe dynamic observer 16.73ns 16.7197 1.00 243.97ns
Dynamic observable subscribe dynamic observer 63.29ns 63.1808 1.00 260.68ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.67ns 0.67033 1.00 0.34ns
Dynamic observer construction 29.13ns 28.5061 1.02 21.36ns
Specific observer construction + as_dynamic 29.16ns 29.4772 0.99 21.39ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.67ns 0.670444 1.00 0.67ns
Dynamic observer OnNext 1.68ns 1.67436 1.00 2.35ns

Operators

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 71.47ns 71.4172 1.00 242.07ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 33.20ns 32.4779 1.02 64.53ns
Make copy of subscriber 17.04ns 16.774 1.02 4.68ns
Transform subsriber to dynamic 46.54ns 43.7651 1.06 26.15ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 32.12ns 32.5382 0.99 52.23ns
composite_subscription add 45.93ns 45.5498 1.01 20.56ns
composite_subscription unsubscribe 6.02ns 6.03531 1.00 10.72ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 19.91ns 16.7429 1.19 35.48ns
error 49.16ns 49.29 1.00 77.12ns
never 17.41ns 16.7603 1.04 235.76ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 34.79ns 26.8422 1.30 58.67ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 20.10ns 16.7451 1.20 36.36ns
just send variadic 17.14ns 16.7908 1.02 42.19ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 18.61ns 17.3627 1.07 124.74ns
merge_with 79.15ns 77.947 1.02 295.69ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 24.47ns 24.4837 1.00 10.28ns
on_error 2.06ns 2.42712 0.85 19.13ns
on_completed 2.02ns 1.72517 1.17 0.67ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 170.89ns 166.638 1.03 180.39ns
get_observable 29.13ns 26.4183 1.10 50.20ns
get_subscriber 62.25ns 59.6472 1.04 14.02ns

Linux GCC

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 0.36ns 0.290724 1.24 0.34ns
Dynamic observable construction 19.17ns 16.6927 1.15 24.34ns
Specific observable construction + as_dynamic 18.49ns 16.4564 1.12 24.28ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 27.39ns 25.0271 1.09 353.79ns
Specific observable lift dynamic observer 29.45ns 28.2249 1.04 370.23ns
Dynamic observable lift specific observer 76.09ns 73.3439 1.04 441.63ns
Dynamic observable lift dynamic observer 65.67ns 72.0943 0.91 392.01ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 22.36ns 21.7785 1.03 420.88ns
Specific observable subscribe dynamic observer 21.11ns 21.5217 0.98 350.54ns
Dynamic observable subscribe specific observer 51.08ns 48.233 1.06 396.38ns
Dynamic observable subscribe dynamic observer 45.03ns 34.9348 1.29 395.42ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 22.09ns 22.3665 0.99 401.25ns
Dynamic observable subscribe lambda 58.42ns 55.2249 1.06 429.83ns
Specific observable subscribe lambda without subscription 21.92ns 21.1155 1.04 393.60ns
Dynamic observable subscribe lambda without subscription 48.88ns 42.4452 1.15 432.01ns
Specific observable subscribe specific subscriber 3.99ns 4.72288 0.84 298.17ns
Dynamic observable subscribe specific subscriber 33.93ns 26.4854 1.28 408.20ns
Specific observable subscribe dynamic observer 4.75ns 5.64997 0.84 323.25ns
Dynamic observable subscribe dynamic observer 18.74ns 17.4872 1.07 355.11ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.32ns 0.315593 1.03 0.35ns
Dynamic observer construction 18.02ns 16.1912 1.11 20.79ns
Specific observer construction + as_dynamic 18.96ns 19.6127 0.97 19.35ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.37ns 0.343209 1.08 0.32ns
Dynamic observer OnNext 2.23ns 1.77309 1.26 1.94ns

Operators

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 16.24ns 15.9456 1.02 406.45ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 19.76ns 21.1624 0.93 56.49ns
Make copy of subscriber 4.59ns 4.1921 1.09 5.06ns
Transform subsriber to dynamic 20.49ns 18.8269 1.09 32.19ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 20.89ns 19.2295 1.09 55.08ns
composite_subscription add 29.24ns 23.9197 1.22 16.90ns
composite_subscription unsubscribe 6.44ns 6.40399 1.01 10.95ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 3.90ns 3.51019 1.11 47.31ns
error 33.73ns 35.8246 0.94 82.23ns
never 4.21ns 3.85525 1.09 305.21ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 19.82ns 21.19 0.94 68.82ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 3.88ns 3.44693 1.13 51.56ns
just send variadic 4.64ns 4.33843 1.07 45.09ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 4.26ns 3.64721 1.17 142.76ns
merge_with 42.83ns 40.4423 1.06 374.07ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 16.82ns 17.3369 0.97 10.59ns
on_error 0.69ns 0.719758 0.97 16.97ns
on_completed 0.65ns 0.660963 0.98 0.68ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 122.26ns 141.808 0.86 176.25ns
get_observable 5.98ns 6.00079 1.00 52.14ns
get_subscriber 11.92ns 12.6597 0.94 24.37ns

Windows MSVC

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 1.81ns 1.51043 1.20 0.81ns
Dynamic observable construction 87.34ns 82.0581 1.06 144.43ns
Specific observable construction + as_dynamic 87.09ns 82.071 1.06 145.95ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 155.59ns 139.667 1.11 1479.16ns
Specific observable lift dynamic observer 186.89ns 168.833 1.11 1522.37ns
Dynamic observable lift specific observer 318.81ns 267.032 1.19 1567.59ns
Dynamic observable lift dynamic observer 262.64ns 221.522 1.19 1587.06ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 120.34ns 105.857 1.14 1420.24ns
Specific observable subscribe dynamic observer 136.96ns 118.962 1.15 1406.89ns
Dynamic observable subscribe specific observer 250.14ns 221.095 1.13 1725.50ns
Dynamic observable subscribe dynamic observer 184.80ns 166.053 1.11 1719.50ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 116.91ns 106.667 1.10 1462.25ns
Dynamic observable subscribe lambda 258.72ns 217.906 1.19 1506.28ns
Specific observable subscribe lambda without subscription 107.90ns 106.569 1.01 1441.65ns
Dynamic observable subscribe lambda without subscription 249.82ns 220.922 1.13 1403.39ns
Specific observable subscribe specific subscriber 20.28ns 16.7389 1.21 1029.41ns
Dynamic observable subscribe specific subscriber 149.03ns 142.41 1.05 1112.83ns
Specific observable subscribe dynamic observer 18.32ns 16.8803 1.09 1063.21ns
Dynamic observable subscribe dynamic observer 72.93ns 64.5318 1.13 1018.92ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.76ns 0.670544 1.13 2.03ns
Dynamic observer construction 86.03ns 82.899 1.04 119.56ns
Specific observer construction + as_dynamic 87.02ns 81.9 1.06 138.76ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.87ns 0.670178 1.30 0.76ns
Dynamic observer OnNext 2.15ns 2.01414 1.07 2.66ns

Operators

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 85.53ns 77.3161 1.11 1188.00ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 98.16ns 88.6807 1.11 432.26ns
Make copy of subscriber 16.49ns 16.7821 0.98 35.57ns
Transform subsriber to dynamic 112.79ns 98.2171 1.15 158.09ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 96.76ns 88.6341 1.09 391.90ns
composite_subscription add 73.86ns 65.3571 1.13 74.82ns
composite_subscription unsubscribe 7.06ns 8.5095 0.83 26.77ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 14.89ns 17.9346 0.83 220.99ns
error 53.51ns 47.1889 1.13 245.43ns
never 19.90ns 16.7364 1.19 946.18ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 95.98ns 83.7558 1.15 274.07ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 22.32ns 19.9077 1.12 218.83ns
just send variadic 22.60ns 20.6969 1.09 215.93ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 37.27ns 34.9653 1.07 808.16ns
merge_with 352.80ns 299.926 1.18 1817.04ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 24.00ns 20.1758 1.19 36.49ns
on_error 2.09ns 2.37413 0.88 19.88ns
on_completed 3.02ns 2.37917 1.27 0.79ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 339.23ns 290.349 1.17 761.30ns
get_observable 31.76ns 25.7915 1.23 183.43ns
get_subscriber 55.86ns 50.3208 1.11 108.41ns

It looks like the delete operator is behind an #if __cpp_sized_deallocation, which isn't set by default in clangd (see https://reviews.llvm.org/D112921).
Adding -fsized-deallocation to clangd flags in Settings | Languages & Frameworks | C/C++ | Clangd should resolve the issue until the proper fix arrives.
@tcw165
tcw165 force-pushed the optimization/compile branch from 0196a6d to cfe66c5 Compare July 16, 2022 07:32
@AlexInLog
AlexInLog merged commit 2ebc9f3 into AlexInLog:main Jul 16, 2022
@tcw165
tcw165 deleted the optimization/compile branch July 17, 2022 04:08
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.

2 participants