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;
+}
+