理解 for 循环、while 循环和 do 循环之间的区别(AS3)

来源:互联网 发布:什么牌子棒球帽知乎 编辑:程序博客网 时间:2024/06/05 03:24

理解 for 循环、while 循环和 do 循环之间的区别

在 Flash 中,反向 for 循环是执行速度最快的循环。 如果循环中需要一个已存储的相同类型对象的列表,使用 Vector 引用该对象列表的反向 for 循环是最快的方式。

如果使用 int 作为迭代参数,而不使用 uint,所有 3 个循环的执行速度都更快。 如果递减循环变量,而不是递增,所有 3 个循环的执行速度都更快。(注意: 如果递减循环变量 i 并使用 i>=0 作为终止条件,并且如果 i 是一个 uint,您将触发一个无限循环。)

如果使用一个变量或常量作为终止条件,而不是用表达式或对象属性,所有 3 个循环的执行速度都更快。 因为初始条件仅需要计算一次(而不是在每次循环迭代中都计算),所以在任何这些循环中为初始条件使用表达式还是对象属性并没有显著的区别。

任何可在不影响结果的前提下移动到循环外部的内容都应该移动。 这包括在循环外部声明对象(参阅有关重用对象的章节),其中在循环内对新构造函数的使用有时可移动到循环外,并且如果终止循环条件是一个表达式,应该在循环外计算它。

我听人说,如果使用的每个对象引用下一个对象,则比使用一个数组来引用对象更快。 在我的测试中,我发现此说法是错误的。

使用数组不但更容易,还能更快地完成初始化并使用它。 当然,使用 Vector 代替数组会更快。 (参阅for_loop_v_sequential_loop 文件夹中的示例测试文件。)

所有这些建议都不可能在大部分情况下具有显著成效。 但是,如果希望竭尽全力提升编码的效率,或者如果项目涉及到迭代大量循环,还是值得实现这些调节的。


http://www.adobe.com/cn/devnet/flash/articles/optimizing-flash-performance.html

0 0
原创粉丝点击