#include #include #include #include static uint64_t gettime() { struct timeval tv; gettimeofday(&tv, NULL); return (uint64_t)tv.tv_sec * 1000000 + (uint64_t)tv.tv_usec; } #define BENCH(type) \ { long int i; type a = 0, b = argc, c = -argc; \ uint64_t t = gettime(); \ for(i = 0x80000000L; i--;) \ a = (a * b + 17) * (a * c + 3) + (b * c + 5); \ printf(#type ": %.5g\n\0%i", (double)(gettime() - t) / 1.0e6, (int)a); \ } int main(int argc, char *argv[]) { BENCH(int); BENCH(unsigned int); BENCH(long int); BENCH(unsigned long int); return 0; }