究竟怎么回事啊?太意外了。
有一段代码,如下:
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 编译和底层运行机制的大哥大姐指点一下迷津。
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 编译和底层运行机制的大哥大姐指点一下迷津。
...全文
相关推荐
传说中的4G到底是怎么回事?.docx
传说中的4G到底是怎么回事?.docx
linux显示磁盘没空间了,但是看了还有空间.这是怎么回事?
linux显示磁盘没空间了,但是查看却还有空间.这是怎么回事?
无线路由器被劫持怎么回事?如何解决?
继“棱镜门”事件之后,网络安全也随之被各大媒体关注,近段时间有不少媒体报道,全球拥有大量的路由器遭入侵、路由器被劫持等等。那么无线路由器被劫持怎么回事?如何解决?下面小编就为大家详细介绍一下,一起来看看
qq登不上怎么回事?.docx
qq登不上怎么回事?.docx
连接到宽带连接时出错600是怎么回事?怎么解决?
连接到宽带连接时出错600是怎么回事?怎么解决?有的用户在设置路由器后或者突然上不去网时候出现错误代码600,这可严重影响了我们上网,简直什么都做不了。不过不用着急,下面小编带来解决办法,请大家参考


