/* * File: numofbits_test.c * * Copyright (C) NAKAMURA Minoru * * $ gcc -g -Wall -mtune=core2 -O3 numofbits_test.c numofbits_routines.c * */ #include #include #include #include enum { REPEAT = 1000000000, DATA_SIZE = 65536 }; extern int dummy(uint32_t x) __attribute__((noinline)); extern int numofbits1(uint32_t x) __attribute__((noinline)); extern int numofbits2(uint32_t x) __attribute__((noinline)); extern int numofbits3(uint32_t x) __attribute__((noinline)); extern int numofbits4(uint32_t x) __attribute__((noinline)); extern int numofbits5(uint32_t x) __attribute__((noinline)); extern int popcnt(uint32_t x) __attribute__((noinline)); static double getdiff(const struct timeval *before, const struct timeval *after) { return (after->tv_sec - before->tv_sec) + 1.0 * (after->tv_usec - before->tv_usec) / 1000000; } static uint32_t data[DATA_SIZE]; int main(int argc, char** argv) { int i; // Prepare input datas for (i=0 ; i