阶乘函数的优化有关问题
阶乘函数的优化问题
------解决方案--------------------
手工优化有没有效果,要在编译器优化编译之后去判断。在VS2008中以release编译,结果fact_u2与fact_u3被合并成了一个函数,而且优化效果并不明显:
int fact(int n)
{
int i;
int result = 1;
for(i = n; i > 1; i--)
result = result * i;
return result;
}
int fact_u2(int n)
{
int i;
int result = 1;
for(i = n; i > 1; i -= 2)
result = (result * i) * (i - 1);
return result;
}
int fact_u3(int n)
{
int i;
int result = 1;
for(i = n; i > 1; i -= 2)
result = result * (i * (i - 1));
return result;
}
为什么fact_u2相对fact性能没有改进,而使用fact_u3性能改进?谢谢
性能优化
C
阶乘
------解决方案--------------------
手工优化有没有效果,要在编译器优化编译之后去判断。在VS2008中以release编译,结果fact_u2与fact_u3被合并成了一个函数,而且优化效果并不明显:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int fact(int n)
{
int i;
int result = 1;
for(i = n; i > 1; i--)
result = result * i;
return result;
}
int fact_u2(int n)
{
int i;
int result = 1;
for(i = n; i > 1; i -= 2)
result = (result * i) * (i - 1);
return result;
}
int fact_u3(int n)