- 避免for-in
- 把数组长度保存在局部变量中
- 较少迭代次数(Duffs Device)
- 基于函数的循环比基于循环的迭代消耗性能更多
- 优化if-else,一般switch比if-else速度快(hash tabel)
1)避免用for-in
常见的循环有:for、do-while、while、for-in。for-in循环比较慢,因为每次迭代操作时会同事搜索实例或原型属性。
2)把数据数组长度保存在局部变量中
for(var i = 0, len = items.length;i < len; i++){ process(items[i]); }
3)减少迭代次数(Duffs Device)http://blog.csdn.net/cengjingcanghai123/article/details/21231865
<script type="text/javascript">
var iterations = Math.floor(items.length/8),
startAt = items.length % 8,
i = 0;
do {
switch(startAt) {
case 0: process(items[i++]);
case 7: process(items[i++]);
case 6: process(items[i++]);
case 5: process(items[i++]);
case 4: process(items[i++]);
case 3: process(items[i++]);
case 2: process(items[i++]);
case 1: process(items[i++]);
}
startAt = 0;
}while(--iterations);
</script>
4)基于函数的循环比基于循环的迭代消耗性能更多。例如:for循环迭代比forEach函数迭代性能高
5)优化if-else,一般switch比if-else速度快,但是在判断条件多时,使用查找表比if-else和switch都快