diff --git a/div_perf.c b/div_perf.c new file mode 100644 index 0000000000000000000000000000000000000000..7dfc664088ec659b98440212e8e73598c264ef57 --- /dev/null +++ b/div_perf.c @@ -0,0 +1,59 @@ +#define TEST_NUM 10000000 + +#include <stdio.h> + +typedef int fx_s2308; +typedef long fixed32; + +#define FX_TO_DOUBLE(a) ((double) (a/(256.0))) +#define DOUBLE_TO_FX(a) (((int)(a*(256.0)))) + +#define FX_DIV(a,b) DOUBLE_TO_FX(FX_TO_DOUBLE(a)/FX_TO_DOUBLE(b)) +#define fx_s2308_l_div1(a,b) (int)((long long)(a)/(b)) +#define fx_s2308_l_div2(a,b) (int)((a<<8)/(b)) + +long long div_sum_double_test() +{ + long long sum = 0; + + for(int i=1;i<TEST_NUM;i++) + { + sum += FX_DIV(DOUBLE_TO_FX(i), DOUBLE_TO_FX(i)); + } + + return sum; +} + +long long div1_sum_longlong_test() +{ + long long sum = 0; + + for(int i=1;i<TEST_NUM;i++) + { + sum += fx_s2308_l_div1(DOUBLE_TO_FX(i), DOUBLE_TO_FX(i)); + } + + return sum; +} + +long long div2_sum_longlong_test() +{ + long long sum = 0; + + for(int i=1;i<TEST_NUM;i++) + { + sum += fx_s2308_l_div2(DOUBLE_TO_FX(i), DOUBLE_TO_FX(i)); + } + + return sum; +} + +int main() +{ + printf("double div - sum : %lld\n", div_sum_double_test()); + printf("long long div1 - sum : %lld\n", div1_sum_longlong_test()); + printf("long long div2 - sum : %lld\n", div2_sum_longlong_test()); + + return 0; +} +