1
4
不,不能这样做,因为没有办法表达 随时间变化的常数 为了一个值。 如果编译器能够做到这一点,那么代码就必须保证返回的值是常量,并且在循环期间不会改变。 但是,在本例中,您可以自由地将新行添加到数据表中,作为循环的一部分,因此,您可以按照自己的方式来保证这一点。 因此,简而言之,如果结束索引不是变量,编译器就不会进行这种优化。 在变量的情况下,编译器只需查看循环代码,并看到该特定变量没有更改,它可能会这样做,并在开始循环之前将值加载到寄存器中,但由此获得的任何性能增益都很可能忽略不计,除非循环体为空。 结论:如果您知道或愿意接受在循环期间结束循环索引是常量,请将其放入变量中。 编辑: 重新阅读您的文章,是的,您可能会看到两种情况下的性能提升也微不足道,因为抖动优化了代码。这种抖动可能会优化最终索引的读取,使其直接访问包含行数的数据表中的变量,而且内存读取也不那么昂贵。另一方面,如果读到房产是一个非常昂贵的操作,你会看到一个更明显的区别。 |
Robert King · Unity C#语法问题-转换位置 1 年前 |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
i_sniff_ket · 在unity之外使用unity类 2 年前 |