阶乘函数的优化有关问题

阶乘函数的优化问题
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)