diff --git a/step2/Divtest.txt b/step2/Divtest.txt new file mode 100644 index 0000000000000000000000000000000000000000..ae10b90710cd02d8e5363065785400b0f16e294c --- /dev/null +++ b/step2/Divtest.txt @@ -0,0 +1,165 @@ +Flat profile: + +Each sample counts as 0.01 seconds. + % cumulative self self total + time seconds seconds calls ns/call ns/call name + 78.05 3.45 3.45 __udivmoddi4 + 5.43 3.69 0.24 __aeabi_ldivmod + 5.20 3.92 0.23 main + 4.98 4.14 0.22 10000000 22.00 22.00 fx_s3132_longlong_div1 + 4.30 4.33 0.19 10000000 19.00 19.00 fx_s3132_longlong_div2 + 2.04 4.42 0.09 10000000 9.00 9.00 fx_s3132_longlong_div + + % the percentage of the total running time of the +time program used by this function. + +cumulative a running sum of the number of seconds accounted + seconds for by this function and those listed above it. + + self the number of seconds accounted for by this +seconds function alone. This is the major sort for this + listing. + +calls the number of times this function was invoked, if + this function is profiled, else blank. + + self the average number of milliseconds spent in this +ms/call function per call, if this function is profiled, + else blank. + + total the average number of milliseconds spent in this +ms/call function and its descendents per call, if this + function is profiled, else blank. + +name the name of the function. This is the minor sort + for this listing. The index shows the location of + the function in the gprof listing. If the index is + in parenthesis it shows where it would appear in + the gprof listing if it were to be printed. + +Copyright (C) 2012-2017 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. + + Call graph (explanation follows) + + +granularity: each sample hit covers 4 byte(s) for 0.23% of 4.42 seconds + +index % time self children called name + <spontaneous> +[1] 78.1 3.45 0.00 __udivmoddi4 [1] +----------------------------------------------- + <spontaneous> +[2] 16.5 0.23 0.50 main [2] + 0.22 0.00 10000000/10000000 fx_s3132_longlong_div1 [4] + 0.19 0.00 10000000/10000000 fx_s3132_longlong_div2 [5] + 0.09 0.00 10000000/10000000 fx_s3132_longlong_div [6] +----------------------------------------------- + <spontaneous> +[3] 5.4 0.24 0.00 __aeabi_ldivmod [3] +----------------------------------------------- + 0.22 0.00 10000000/10000000 main [2] +[4] 5.0 0.22 0.00 10000000 fx_s3132_longlong_div1 [4] +----------------------------------------------- + 0.19 0.00 10000000/10000000 main [2] +[5] 4.3 0.19 0.00 10000000 fx_s3132_longlong_div2 [5] +----------------------------------------------- + 0.09 0.00 10000000/10000000 main [2] +[6] 2.0 0.09 0.00 10000000 fx_s3132_longlong_div [6] +----------------------------------------------- + + This table describes the call tree of the program, and was sorted by + the total amount of time spent in each function and its children. + + Each entry in this table consists of several lines. The line with the + index number at the left hand margin lists the current function. + The lines above it list the functions that called this function, + and the lines below it list the functions this one called. + This line lists: + index A unique number given to each element of the table. + Index numbers are sorted numerically. + The index number is printed next to every function name so + it is easier to look up where the function is in the table. + + % time This is the percentage of the `total' time that was spent + in this function and its children. Note that due to + different viewpoints, functions excluded by options, etc, + these numbers will NOT add up to 100%. + + self This is the total amount of time spent in this function. + + children This is the total amount of time propagated into this + function by its children. + + called This is the number of times the function was called. + If the function called itself recursively, the number + only includes non-recursive calls, and is followed by + a `+' and the number of recursive calls. + + name The name of the current function. The index number is + printed after it. If the function is a member of a + cycle, the cycle number is printed between the + function's name and the index number. + + + For the function's parents, the fields have the following meanings: + + self This is the amount of time that was propagated directly + from the function into this parent. + + children This is the amount of time that was propagated from + the function's children into this parent. + + called This is the number of times this parent called the + function `/' the total number of times the function + was called. Recursive calls to the function are not + included in the number after the `/'. + + name This is the name of the parent. The parent's index + number is printed after it. If the parent is a + member of a cycle, the cycle number is printed between + the name and the index number. + + If the parents of the function cannot be determined, the word + `<spontaneous>' is printed in the `name' field, and all the other + fields are blank. + + For the function's children, the fields have the following meanings: + + self This is the amount of time that was propagated directly + from the child into the function. + + children This is the amount of time that was propagated from the + child's children to the function. + + called This is the number of times the function called + this child `/' the total number of times the child + was called. Recursive calls by the child are not + listed in the number after the `/'. + + name This is the name of the child. The child's index + number is printed after it. If the child is a + member of a cycle, the cycle number is printed + between the name and the index number. + + If there are any cycles (circles) in the call graph, there is an + entry for the cycle-as-a-whole. This entry shows who called the + cycle (as parents) and the members of the cycle (as children.) + The `+' recursive calls entry shows the number of function calls that + were internal to the cycle, and the calls entry for each member shows, + for that member, how many times it was called from other members of + the cycle. + +Copyright (C) 2012-2017 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. + +Index by function name + + [3] __aeabi_ldivmod [6] fx_s3132_longlong_div [5] fx_s3132_longlong_div2 + [1] __udivmoddi4 [4] fx_s3132_longlong_div1 [2] main diff --git a/step2/Multest.text b/step2/Multest.text new file mode 100644 index 0000000000000000000000000000000000000000..51be488bd4aef739fce04623e10a16a8a61372db --- /dev/null +++ b/step2/Multest.text @@ -0,0 +1,157 @@ +Flat profile: + +Each sample counts as 0.01 seconds. + % cumulative self self total + time seconds seconds calls ns/call ns/call name + 29.82 0.34 0.34 10000000 34.00 34.00 fx_s3132_longlong_mul1 + 29.82 0.68 0.34 main + 21.93 0.93 0.25 10000000 25.00 25.00 fx_s3132_longlong_mul2 + 18.42 1.14 0.21 10000000 21.00 21.00 fx_s3132_longlong_mul + + % the percentage of the total running time of the +time program used by this function. + +cumulative a running sum of the number of seconds accounted + seconds for by this function and those listed above it. + + self the number of seconds accounted for by this +seconds function alone. This is the major sort for this + listing. + +calls the number of times this function was invoked, if + this function is profiled, else blank. + + self the average number of milliseconds spent in this +ms/call function per call, if this function is profiled, + else blank. + + total the average number of milliseconds spent in this +ms/call function and its descendents per call, if this + function is profiled, else blank. + +name the name of the function. This is the minor sort + for this listing. The index shows the location of + the function in the gprof listing. If the index is + in parenthesis it shows where it would appear in + the gprof listing if it were to be printed. + +Copyright (C) 2012-2017 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. + + Call graph (explanation follows) + + +granularity: each sample hit covers 4 byte(s) for 0.88% of 1.14 seconds + +index % time self children called name + <spontaneous> +[1] 100.0 0.34 0.80 main [1] + 0.34 0.00 10000000/10000000 fx_s3132_longlong_mul1 [2] + 0.25 0.00 10000000/10000000 fx_s3132_longlong_mul2 [3] + 0.21 0.00 10000000/10000000 fx_s3132_longlong_mul [4] +----------------------------------------------- + 0.34 0.00 10000000/10000000 main [1] +[2] 29.8 0.34 0.00 10000000 fx_s3132_longlong_mul1 [2] +----------------------------------------------- + 0.25 0.00 10000000/10000000 main [1] +[3] 21.9 0.25 0.00 10000000 fx_s3132_longlong_mul2 [3] +----------------------------------------------- + 0.21 0.00 10000000/10000000 main [1] +[4] 18.4 0.21 0.00 10000000 fx_s3132_longlong_mul [4] +----------------------------------------------- + + This table describes the call tree of the program, and was sorted by + the total amount of time spent in each function and its children. + + Each entry in this table consists of several lines. The line with the + index number at the left hand margin lists the current function. + The lines above it list the functions that called this function, + and the lines below it list the functions this one called. + This line lists: + index A unique number given to each element of the table. + Index numbers are sorted numerically. + The index number is printed next to every function name so + it is easier to look up where the function is in the table. + + % time This is the percentage of the `total' time that was spent + in this function and its children. Note that due to + different viewpoints, functions excluded by options, etc, + these numbers will NOT add up to 100%. + + self This is the total amount of time spent in this function. + + children This is the total amount of time propagated into this + function by its children. + + called This is the number of times the function was called. + If the function called itself recursively, the number + only includes non-recursive calls, and is followed by + a `+' and the number of recursive calls. + + name The name of the current function. The index number is + printed after it. If the function is a member of a + cycle, the cycle number is printed between the + function's name and the index number. + + + For the function's parents, the fields have the following meanings: + + self This is the amount of time that was propagated directly + from the function into this parent. + + children This is the amount of time that was propagated from + the function's children into this parent. + + called This is the number of times this parent called the + function `/' the total number of times the function + was called. Recursive calls to the function are not + included in the number after the `/'. + + name This is the name of the parent. The parent's index + number is printed after it. If the parent is a + member of a cycle, the cycle number is printed between + the name and the index number. + + If the parents of the function cannot be determined, the word + `<spontaneous>' is printed in the `name' field, and all the other + fields are blank. + + For the function's children, the fields have the following meanings: + + self This is the amount of time that was propagated directly + from the child into the function. + + children This is the amount of time that was propagated from the + child's children to the function. + + called This is the number of times the function called + this child `/' the total number of times the child + was called. Recursive calls by the child are not + listed in the number after the `/'. + + name This is the name of the child. The child's index + number is printed after it. If the child is a + member of a cycle, the cycle number is printed + between the name and the index number. + + If there are any cycles (circles) in the call graph, there is an + entry for the cycle-as-a-whole. This entry shows who called the + cycle (as parents) and the members of the cycle (as children.) + The `+' recursive calls entry shows the number of function calls that + were internal to the cycle, and the calls entry for each member shows, + for that member, how many times it was called from other members of + the cycle. + +Copyright (C) 2012-2017 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. + +Index by function name + + [4] fx_s3132_longlong_mul [3] fx_s3132_longlong_mul2 + [2] fx_s3132_longlong_mul1 [1] main diff --git a/step2/test.c b/step2/test.c index 3d8d86113917887bacd19d816e6afb68d3e80f74..2fb82529afeb600bfc18d092692bd8af7964ef61 100644 --- a/step2/test.c +++ b/step2/test.c @@ -1,90 +1,85 @@ #include <stdio.h> #include "fx_s3132_longlong.h" +#define Max 10000000 -fx_s3132 fx_s3132_longlong_mul(fx_s3132 fa, fx_s3132 fb){ - return fx32_mul(fa, fb); +void fx_s3132_longlong_mul(fx_s3132 fa, fx_s3132 fb) { + fx32_mul(fa, fb); } -fx_s3132 fx_s3132_longlong_mul1(fx_s3132 fa, fx_s3132 fb){ - return fx32_mul1(fa, fb); +void fx_s3132_longlong_mul1(fx_s3132 fa, fx_s3132 fb) { + fx32_mul1(fa, fb); } -fx_s3132 fx_s3132_longlong_mul2(fx_s3132 fa, fx_s3132 fb){ - return fx32_mul2(fa, fb); +void fx_s3132_longlong_mul2(fx_s3132 fa, fx_s3132 fb) { + fx32_mul2(fa, fb); } -fx_s3132 fx_s3132_longlong_div(fx_s3132 fa, fx_s3132 fb){ - return fx32_div(fa, fb); +void fx_s3132_longlong_div(fx_s3132 fa, fx_s3132 fb) { + fx32_div(fa, fb); } -fx_s3132 fx_s3132_longlong_div1(fx_s3132 fa, fx_s3132 fb){ - return fx32_div1(fa, fb); +void fx_s3132_longlong_div1(fx_s3132 fa, fx_s3132 fb) { + fx32_div1(fa, fb); } -fx_s3132 fx_s3132_longlong_div2(fx_s3132 fa, fx_s3132 fb){ - return fx32_div2(fa, fb); +void fx_s3132_longlong_div2(fx_s3132 fa, fx_s3132 fb) { + fx32_div2(fa, fb); } -int main(){ +int main() { fixed64 num1, num2; int choose; - - printf("1. Mul 2.Div 3.Sin\n"); + + printf("1. Mul Result and Performance 2. Div Result and Performance 3. Sin Result \n"); fflush(stdout); scanf("%d", &choose); - if(choose!=3){ + if (choose != 3) { printf("Write 2 number\n"); fflush(stdout); scanf("%lld", &num1); scanf("%lld", &num2); - }else{ - printf("Write number\n"); + } + else { + printf("Write 1 number\n"); fflush(stdout); scanf("%lld", &num1); } - - fx_s3132 sum1=0; //0 - fx_s3132 sum2=0; //1 - fx_s3132 sum3=0; //2 - fx_s3132 sum4=0; //sin - - if(choose==1){ - printf("Mul: %ld\n", fx_s3132_longlong_mul(num1, num2)); - printf("Mul1: %ld\n", fx_s3132_longlong_mul1(num1, num2)); - printf("Mul2: %ld\n", fx_s3132_longlong_mul2(num1, num2)); - - for(int i=0; i< 10000000; i++){ - sum1 +=fx_s3132_longlong_mul(num1, num2); - } - for(int i=0; i< 10000000; i++){ - sum2 +=fx_s3132_longlong_mul1(num1, num2); + + if (choose == 1) { + printf("Mul: %lld\n", fx32_mul(num1, num2)); + printf("Mul1: %lld\n", fx32_mul1(num1, num2)); + printf("Mul2: %lld\n", fx32_mul2(num1, num2)); + + for (int i = 0; i < Max; i++) { + fx_s3132_longlong_mul(num1, num2); + } + for (int i = 0; i < Max; i++) { + fx_s3132_longlong_mul1(num1, num2); } - for(int i=0; i< 10000000; i++){ - sum3 +=fx_s3132_longlong_mul2(num1, num2); + for (int i = 0; i < Max; i++) { + fx_s3132_longlong_mul2(num1, num2); } } - else if(choose==2){ - printf("Div: %ld\n", fx_s3132_longlong_div(num1, num2)); - printf("Div1: %ld\n", fx_s3132_longlong_div1(num1, num2)); - printf("Div2: %ld\n", fx_s3132_longlong_div2(num1, num2)); - - for(int i=0; i< 10000000; i++){ - sum1 +=fx_s3132_longlong_div(num1, num2); - } - for(int i=0; i< 10000000; i++){ - sum2 +=fx_s3132_longlong_div1(num1, num2); + else if (choose == 2) { + printf("Div: %lld\n", fx32_div(num1, num2)); + printf("Div1: %lld\n", fx32_div1(num1, num2)); + printf("Div2: %lld\n", fx32_div2(num1, num2)); + + for (int i = 0; i < Max; i++) { + fx_s3132_longlong_div(num1, num2); + } + for (int i = 0; i < Max; i++) { + fx_s3132_longlong_div1(num1, num2); } - for(int i=0; i< 10000000; i++){ - sum3 +=fx_s3132_longlong_div2(num1, num2); + for (int i = 0; i < Max; i++) { + fx_s3132_longlong_div2(num1, num2); } - }if(choose==3){ + }if (choose == 3) { printf("Sin : %ld\n", fx32_sind(num1)); - - for(int i=0; i< 10000000; i++){ - sum4 +=fx32_sind(num1); - } + + } -} \ No newline at end of file +}