C、C++の最適化について語るスレ

このエントリーをはてなブックマークに追加
411r
一番早いminはどれ?
typedef int int32_t;
int32_t min0( int32_t a, int32_t b ) {
    return a < b ? a : b;
}
int32_t min1( int32_t a, int32_t b ) {
    return ( ( a < b ) * a ) | ( ( b <= a ) * b );
}
int32_t min2( int32_t a, int32_t b ) {
    // mathmatic shift
    return ( ( ( a - b ) >> 31 ) & a ) | ( ( ( b - a - 1 ) >> 31 ) & b );
}
int32_t min3( int32_t a, int32_t b ) {
    // logical shift
    return ( ( ( a - b ) >> 31 ) * a ) | ( ( ( b - a - 1 ) >> 31 ) * b );
}
int32_t min4( int32_t a, int32_t b ) {
    return ( ( ( ( a - b ) >> 31 ) & 0x01 ) * a ) | ( ( ( ( b - a - 1 ) >> 31 ) & 0x01 ) * b );
}