Same user as @AaronDMarasco-VSI, but since that company no longer exists...
- Maryland
Pinned Loading
-
Beware macros when using C++ STL <al...
Beware macros when using C++ STL <algorithm> functions 1Super short summary: Using `ntohs` in code resulted in huge bloat with both `gcc` and `clang`. The preprocessor _must_ see it as a function call, `ntohs()`, to replace it with its built-in equivalent. So using `std::transform` on something that is normally a macro but has a library fallback will cause your code to slow down considerably (and in my case not be able to keep up with a real-time processing flow).
23https://gcc.godbolt.org/z/dM2Ge4 is a MWE (also attached to this gist). As of 4 May 2020, both compilers' trunks with `-std=c++17 -Ofast` will `call` the `ntohs` from an internal library with the "naked" `std::transform` call. If your compiler supports lambdas, the second iteration works around the issue. If not, the hand-unrolled third version produces the exact same assembly as the second.
45This is because if you dig deep enough, you will find in [`inet/netinet/in.h`](https://sourceware.org/git/?p=glibc.git;a=blob_plain;f=inet/netinet/in.h;hb=HEAD) that `ntohs` is a macro pointing to `__bswap_16`. But without `()`, your preprocessor doesn't know this, so it has to use the library fallback.
-
opencpi
opencpi PublicForked from AaronDMarasco-VSI/opencpi
Open Component Portability Infrastructure
C
-
systemd-watchdog
systemd-watchdog PublicForked from stigok/sd-notify
sd_notify and sd_watchdog_enabled client functionality for writing Python daemons
-
trac-docker
trac-docker PublicForked from dixudx/trac-docker
Trac(http://trac.edgewall.org/) Dockerfile
Dockerfile 1
-
Something went wrong, please refresh the page to try again.
If the problem persists, check the GitHub status page or contact support.
If the problem persists, check the GitHub status page or contact support.