js无限轮播算法中干掉if判断
2024-09-07 15:39:07
无限轮播在网页应用中经常见到,这其中算法各有千秋,在学习算法分析一书中发现自增取余方法可以干掉一些不必要的if判断,具体代码如下:
var arr= [1,2,3,4,5,6,7,8];
var index=0;
var length=arr.length;
setInterval(function(){
// 自增
console.log(arr[index++%length]);
// 自减
// console.log(arr[index=(index+length-1)%length]);
}, 1000);
/*
//性能测试
console.time("start");
for (var i = 0; i < 50000; i++) {
arr[index++%length];
};
console.timeEnd("start"); //60ms左右
console.time("start");
for (var i = 0; i < 50000; i++) {
if(++index>=length){
index=0;
}
arr[index];
};
console.timeEnd("start"); //60ms左右*/
从性能测试以及算法复杂度来看,跟if判断在伯仲之间,应用场景因地制宜。
最新文章
- hibrenate @ManyToOne(fetch = FetchType.EAGER) 和 lazy 区别
- ecshop怎么添加配送方式
- 编写简单的C/S聊天程序
- struts调用的几种方法
- Myisam and InnoDB
- win 10应用商店下载应用错误码0x80070422
- open和fopen的区别(转)
- web文档类型DOCTYPE html很重要
- Syslog4j如何实现接收日志
- LNMP之Nginx
- 查看SQL Server服务运行帐户和SQL Server的所有注册表项
- AWT的应用
- 在虚拟机上运行zookeeper的过程中,xshell连接不上虚拟机
- UVa LA 3213 - Ancient Cipher 水题 难度: 0
- 人类及其他物种基因组DNA之问
- PCA (主成分分析)详解 (写给初学者) 结合matlab(转载)
- asp.net获取当前网址url
- Codeforces 454D - Little Pony and Harmony Chest
- 20135319zl内核模块编译报告
- luoguP4735 最大异或和
热门文章
- 高并发场景下System.currentTimeMillis()的性能问题的优化
- 将 C++/WinRT 中的线程切换体验带到 C# 中来(WPF 版本)
- 【解决方案】文件上具有 Web 标记,请删除 Web 标记
- 解决C#调用COM组件异常来自 HRESULT:0x80010105 (RPC_E_SERVERFAULT)的错误
- go install -v github.com/gopherjs/gopherjs报错提示go cannot find package ";golang.org/x/crypto/ssh/terminal"; 解决方案
- in __init__ self._traceback = tf_stack.extract_stack()的一个原因
- sense chrome扩展工具安装问题
- Spring AOP无法拦截Controller的原因
- Weak Session IDs
- 关于ABViewer的疑问解答