JavaScript 迭代优化(Duff's Device)
来源:互联网 发布:上海狮翼网络 编辑:程序博客网 时间:2024/06/05 11:02
众所周知,过多的循环会带来一定的性能开销,增加总体运行时间。而减少迭代次数能够优化性能。”Duff’s Device” 作为广为人知的一种限制循环迭代次数的模式,还是有必要了解的。
Duff’s Device 原本是 C 语言中的实现方式,不过由 Jeff Greenberg 移植到 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);
代码的思路是非常的清晰的,那就是每次循环都执行八次函数,这样很明显会减少迭代的次数。不过,只有在迭代次数比较多时,才能够有明显的效率提升。
此算法稍快的版本取消了 switch 语句,而且余数处理和主循环分开:
var i = items.length % 8;while(i) { process(items[i--]);}i = Math.floor(items.length / 8);while(i) { process(items[i--]); process(items[i--]); process(items[i--]); process(items[i--]); process(items[i--]); process(items[i--]); process(items[i--]); process(items[i--]);}
其实整个实现的过程并不复杂,不过为什么 Duff’s Device 每次迭代都是执行 8 次函数?
阅读全文
0 0
- JavaScript 迭代优化(Duff's Device)
- 达夫设备(Duff`s Device)减少迭代次数
- Duff's device(C循环展开)
- 达夫设备(Duff's Device)
- 达夫设备(Duff's Device)
- Duff's Device
- Duff's device
- Duff's device
- Duff's Device
- Duff's device
- Duff's Device
- Duff's device
- Duff's Device
- Duff's Device
- Duff's device
- Duff's Device —— 一种优化的复制方法
- javascript性能提升——Duff's Device
- javascript减少循环迭代次数(”Dufff's Device算法“与“分时处理”)
- docker0网桥更改固定IP
- android 内存泄露诊断
- npm常用命令总结
- git学习笔记
- trie树学习总结(字典树模板)
- JavaScript 迭代优化(Duff's Device)
- 打造绚丽平行空间引导页
- shell脚本报错:"[: =: unary operator expected"
- shell脚本一键安装ftp及配置
- Eclipse Java注释模板设置详解 http://blog.csdn.net/ahhsxy/archive/2009/09/11/4542682.aspx
- Spring基础内容
- 英年早逝的不止ICO,我们可能失去更多
- java 截取字符串获取子字符串
- SylixOS中DNS静态映射简介