究竟怎么回事啊?太意外了。

AhBian AhBian 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
有一段代码,如下:
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 编译和底层运行机制的大哥大姐指点一下迷津。
...全文

相关推荐

评论 45
收藏 已收藏
分享
返回顶部
AhBian
C# 111,129 成员 642,540 内容