use*_*831 1 c# evaluation loops for-loop conditional-statements
这是一个非常挑剔的问题,但好奇心让我变得更好.
每次循环执行时,for循环是否重新评估RHS条件?见下文.
for(int i = 0; i < collection.Count; i++)
{
}
Run Code Online (Sandbox Code Playgroud)
在整个代码库中执行以下操作是否良好?
for(int i = 0, n = collections.Count; i < n; i++)
{
}
Run Code Online (Sandbox Code Playgroud)
或者编译器是否进行了这些优化/它们可以忽略不计(即使有庞大的代码库)?
在每次迭代之前将重新评估条件(除非编译器检测到条件是常量),并且可以编写依赖于此的代码(例如调用每次返回值不同的函数).因此,如果您的评估条件很昂贵并且您确定它将保持不变,那么在循环之前对它进行一次评估确实是一个好主意.但是,对于大多数标准集合类型而言,Count如此快速的操作使得可忽略的性能增益不值得降低可读性.
| 归档时间: |
|
| 查看次数: |
194 次 |
| 最近记录: |