Is it ok to use 64bit integers in a 32bit application?

Nyaarium picture Nyaarium · Mar 11, 2015 · Viewed 8.2k times · Source

I notice in C and C++, we can use int64_t, or simply a long long.

If I compile 32bit code using these types, will I suffer any performance issues on 64bit and/or 32bit machines?

Aside from saving some RAM, would I ever have a reason to just use int?
After all, 64bit ints are far more useful in storing large numbers.

Answer

Tony Delroy picture Tony Delroy · Mar 11, 2015

If I compile 32bit code using these types, will I suffer any performance issues on 64bit and/or 32bit machines?

Your compiler may need to generate several machine code instructions to perform operations on the 64 bit values, slowing down those operations by several times. If that might be a concern, you'd want to do some benchmarking to assess the impact on a particular program with realistic data. That issue exists where you're executing the 32 bit executable on a 32 or 64 bit machine.

would I ever have a reason to just use int?

Aside from performance and memory usage, there's occasionally reason to use ints because other APIs/streams etc. that you work with use int. There's also subtle documentary value in using int if it's clearly adequate, otherwise other programmers may waste time wondering why you'd gone out of your way to use a long long.

After all, 64bit ints are far more useful in storing large numbers.

Far more useful in storing very large numbers - sure - but that's relatively rarely needed. If you're storing something like a year or someone's age, there's just no particular point in having 64 bits.