究竟怎么回事啊?太意外了。
有一段代码,如下:
int i, t, q, r, size;
int[] factors;
...
while ( ... )
{
...
t = factors[size - 1] + factors[size - 2];
q = t / (factors[size - 2] + 1);
r = t % (factors[size - 2] + 1);
t = factors[size - 2] + 1;
i = size - 2;
size = size - 2 + q;
...
}
...
我把它们精简一下,目的是想减少运算表达式,以提高性能:
int i, t, q, r, s, size;
int[] factors;
...
while ( ... )
{
...
i = size - 2;
q = factors[i];
t = factors[size - 1] + q;
s = q + 1;
q = t / s;
r = t % s;
t = s;
size = i + q;
...
}
...
如果不是在循环中,我也不会去精简它们,因为即使有所改善,效果实在太微。
但因为在循环中,所以我才有此想法。
然而实际结果是:精简后,性能反而略微有所下降。
实在不明白是什么道道。
希望熟悉 .NET 编译和底层运行机制的大哥大姐指点一下迷津。