Messages in this thread | | | From | Renate Meijer <> | Subject | Re: Use of C99 int types | Date | Sun, 3 Apr 2005 21:23:27 +0200 |
| |
On Apr 3, 2005, at 2:30 PM, Dag Arne Osvik wrote:
> Stephen Rothwell wrote: > >> On Sun, 03 Apr 2005 13:55:39 +0200 Dag Arne Osvik <da@osvik.no> wrote: >> >>> I've been working on a new DES implementation for Linux, and ran into >>> the problem of how to get access to C99 types like uint_fast32_t for >>> internal (not interface) use. In my tests, key setup on Athlon 64 >>> slows >>> down by 40% when using u32 instead of uint_fast32_t. >>> >> >> If you look in stdint.h you may find that uint_fast32_t is actually >> 64 bits on Athlon 64 ... so does it help if you use u64? >> >> > > Yes, but wouldn't it be much better to avoid code like the following, > which may also be wrong (in terms of speed)? > > #ifdef CONFIG_64BIT // or maybe CONFIG_X86_64? > #define fast_u32 u64 > #else > #define fast_u32 u32 > #endif
Isn't it better to use a general integer type, reflecting the cpu's native register-size and let the compiler sort it out? Restrict all uses of explicit width types to where it's *really* needed, that is, in drivers, network-code, etc. I firmly oppose any definition of "#define fast_u32 u64". This kind of definitions will only create needless confusion.
I wonder how much other code is suffering from this kind of overly explicit typing. It's much easier to make assumptions about integer size unwittingly than it is to avoid them. I used to assume (for instance) that sizeof(int) == sizeof(long) == sizeof(void *) at one point in my career. Fortunately, reality soon asserted itself again.
Regards,
Renate Meijer.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |