查看文章 |
测试循环展开的优化(ARM)
2009-08-09 10:49
/* test the loop unroling, by R.wen */ /* 循环展开可以避免小循环中,由于循环开销所占的比例过大造成的性能下降*/ #include <stdio.h> #include <time.h> int checksum(int num) { int i; int sum1=0, sum2=0; time_t t1, t2; t1 = time(NULL); for (i=num; i>0; i--) sum1 += i; t2 = time(NULL); t1 = t2 - t1; { for (i=num/4; i>0; i--) { sum2 += i; sum2 += i+1; sum2 += i+2; sum2 += i+3; } for (i=num&3; i>0; i--) sum2 += i; } t2 = time(NULL) - t2; printf("sum1 = %d, time1 = %d, sum2 = %d, time2 = %d\n", \ sum1, sum2, t1, t2); return (sum1 + sum2); } int main(void) { checksum(100000000); /* or use 10, 000, 000 */ return 0; } |
最近读者: