Wenn __builtin_memcpy wird durch libc - memcpy

Gibt es eine version des C99/posix memcpy Funktion im GCC: __builtin_memcpy.

Manchmal kann es ersetzt werden durch GCC-inline-version von memcpy und in anderen Fällen ist es ersetzt durch Aufruf der libc ist memcpy. E. g. es wurde festgestellt hier:

Schließlich auf eine compiler-Hinweis, __builtin_memcpy zurückgreifen können, um das aussenden eines memcpy-Funktion aufrufen.

Was ist die Logik in dieser Auswahl? Ist es logisch, dass die gleiche in anderen gcc-kompatiblen Compiler, wie clang/llvm, intel c++ compiler, PCC, suncc (oracle-studio)?

Wann sollte ich lieber mit __builtin_memcpy, der über der Ebene memcpy?

Es scheint, dass es verwendet einen inline-version, wenn die Größe ist eine compile-Zeit-Konstante, und es ist weniger als oder gleich 8192.

InformationsquelleAutor osgx | 2012-07-31

Schreibe einen Kommentar