相关疑难解决方法(0)

C#编译器是否足够智能以优化此代码?

请忽略此问题中的代码可读性.

在性能方面,如下所示代码应如下所示:

int maxResults = criteria.MaxResults;

if (maxResults > 0)
{
    while (accounts.Count > maxResults)
        accounts.RemoveAt(maxResults);
}
Run Code Online (Sandbox Code Playgroud)

或者像这样:

if (criteria.MaxResults > 0)
{
    while (accounts.Count > criteria.MaxResults)
        accounts.RemoveAt(criteria.MaxResults);
}
Run Code Online (Sandbox Code Playgroud)

编辑:criteria是一个class,MaxResults是一个简单的整数属性(即,public int MaxResults { get { return _maxResults; } }.

C#编译器是否将其MaxResults视为黑盒并每次都进行评估?或者它是否足够聪明,可以发现我有3次调用同一个属性而没有在调用之间修改该属性?如果MaxResults是一块田地怎么办?

优化法则之一是预先计算,所以我本能地像第一个列表那样编写这个代码,但我很好奇是否自动为我做了这种事情(再次忽略代码可读性).

(注意:我对听到'微优化'论证并不感兴趣,这个论点在我发布的特定情况下可能是有效的.我只是想了解正在发生或未发生的一些理论.)

.net c# compiler-construction optimization properties

26
推荐指数
4
解决办法
3265
查看次数