Author: Dieter Buerssner
Date: 14:56:39 07/06/03
Go up one level in this thread
Forgot the boring source code: #include <stdio.h> #include <stdlib.h> #include <time.h> #define N_ITERATIONS 1000000000 #if __GNUC__ #define MY_INLINE __inline__ #define NOOP() __asm__ volatile("xorl %eax, %eax") #else #define MY_INLINE __forceinline #define NOOP() _asm {xor eax, eax} #endif #define SEED(n) srand(n) #define DECLARE_TEST_FUNC(name) \ void tfunc_##name(void) \ { \ unsigned long n=N_ITERATIONS; \ do \ { \ name(); \ } while (--n != 0); \ } MY_INLINE void randnoop0(void) { rand(); } DECLARE_TEST_FUNC(randnoop0) /* All will repeat fron now, just add NOOPs */ MY_INLINE void randnoop1(void) { rand(); NOOP(); } DECLARE_TEST_FUNC(randnoop1) MY_INLINE void randnoop2(void) { rand(); NOOP(); NOOP(); } DECLARE_TEST_FUNC(randnoop2) MY_INLINE void randnoop3(void) { rand(); NOOP(); NOOP(); NOOP(); } DECLARE_TEST_FUNC(randnoop3) MY_INLINE void randnoop4(void) { rand(); NOOP(); NOOP(); NOOP(); NOOP(); } DECLARE_TEST_FUNC(randnoop4) MY_INLINE void randnoop5(void) { rand(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); } DECLARE_TEST_FUNC(randnoop5) MY_INLINE void randnoop6(void) { rand(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); } DECLARE_TEST_FUNC(randnoop6) MY_INLINE void randnoop7(void) { rand(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); } DECLARE_TEST_FUNC(randnoop7) MY_INLINE void randnoop8(void) { rand(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); } DECLARE_TEST_FUNC(randnoop8) MY_INLINE void randnoop9(void) { rand(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); } DECLARE_TEST_FUNC(randnoop9) MY_INLINE void randnoop10(void) { rand(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); } DECLARE_TEST_FUNC(randnoop10) MY_INLINE void randnoop11(void) { rand(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); } DECLARE_TEST_FUNC(randnoop11) MY_INLINE void randnoop12(void) { rand(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); } DECLARE_TEST_FUNC(randnoop12) MY_INLINE void randnoop13(void) { rand(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); } DECLARE_TEST_FUNC(randnoop13) MY_INLINE void randnoop14(void) { rand(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); } DECLARE_TEST_FUNC(randnoop14) MY_INLINE void randnoop15(void) { rand(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); } DECLARE_TEST_FUNC(randnoop15) MY_INLINE void randnoop16(void) { rand(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); } DECLARE_TEST_FUNC(randnoop16) MY_INLINE void randnoop17(void) { rand(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); NOOP(); } DECLARE_TEST_FUNC(randnoop17) void time_func(void (*test_function)(void), const char *name); #define TIME_FUNCTION(name) time_func(tfunc_##name, #name) int main (void) { TIME_FUNCTION(randnoop0); TIME_FUNCTION(randnoop1); TIME_FUNCTION(randnoop2); TIME_FUNCTION(randnoop3); TIME_FUNCTION(randnoop4); TIME_FUNCTION(randnoop5); TIME_FUNCTION(randnoop6); TIME_FUNCTION(randnoop7); TIME_FUNCTION(randnoop8); TIME_FUNCTION(randnoop9); TIME_FUNCTION(randnoop10); TIME_FUNCTION(randnoop11); TIME_FUNCTION(randnoop12); TIME_FUNCTION(randnoop13); TIME_FUNCTION(randnoop14); TIME_FUNCTION(randnoop15); TIME_FUNCTION(randnoop16); TIME_FUNCTION(randnoop17); return 0; } void time_func(void (*test_function)(void), const char *name) { clock_t clk; SEED(0); clk = clock(); test_function(); clk = clock() - clk; printf("%14s %.3f\n", name, (double)clk / CLOCKS_PER_SEC); }
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.