タグ

Cとgccに関するmiya2000のブックマーク (2)

  • memcpy 最適化 - kazuhoのメモ置き場

    バイト単位でコピーするアホなコードの方が、勝手にベクトル化される分、gcc 内蔵のヤツより最大3倍高速なんだってwww memcpy() compiled with vectorizing compilers All current compilers for linux should support SSE2 auto-vectorization with #include <string.h> void *(memcpy)(void *restrict b, const void *restrict a, size_t n){ char *s1 = b; const char *s2 = a; for(; 0<n; --n)*s1++ = *s2++; return b; }(中略) x86-64 gcc memcpy() (中略) Linking in a user-compiled

    memcpy 最適化 - kazuhoのメモ置き場
  • 3項演算子のgcc拡張 - Psychs's blog

    http://tiki.is.os-omicron.org/tiki.cgi?c=v&p=gcc%A4%CE%B3%C8%C4%A5%B5%A1%C7%BD 今日、gcc 拡張で 3項演算子 x ? x : y の最初の返値を省略して x ?: y と書けることを知った。 つまり、ruby で v = x || y || z と書くところを、C でも v = x ?: y ?: z; こんな感じに書けるわけだ。これはいい。 この書き方だと、x や y が一度しか評価されないので、マクロを書くときに便利だと思う。 追記 (2007.9.28) gcc では、|| を使うと 0 か 1 になるので、?: に利用価値がある。 printf("%d", 2 || 4); // => 1 printf("%d", 2 ?: 4); // => 2

    3項演算子のgcc拡張 - Psychs's blog
    miya2000
    miya2000 2007/09/28
  • 1