首页 > 编程语言 >javascript常用的循环对比及性能分析

javascript常用的循环对比及性能分析

时间:2023-04-16 11:15:03浏览次数:42  
标签:do console dataList javascript while 循环 let 对比

结论:js中的for循环只有在处理百万条数据以上才会展示出他的强大性能,和看出明显优势,但是在百万条数据往下甚至到个位数的数据量通常都是for和while还有do...while不相上下,反而后两者更加优势明显

下面是测试耗时截图(在不同浏览器也会有所不同,我这是 Chrome 版本 111.0.5563.149)

image.png
image.png
image.png
image.png
image.png
image.png
image.png

可以复制代码直接运行测试

    <script>
        let dataList = Array(99).fill({name:'叫我书中枫叶',age:18})
        let dataObj = {name: '小明', age: 18}

        /*
        * for 循环
        * 语法:for (初始化; 条件; 步进) {循环体}
        * */
        console.time('for循环时间');
        for (let i = 0; i < dataList.length; i++) {
            // console.log("值: ",dataList[i])
        }
        console.timeEnd('for循环时间');

        /*
        * while 循环
        * 语法:while (条件) {循环体}
        * */
        console.time('while循环时间');
        let j = 0
        while (j < dataList.length) {
            // console.log("值: ",dataList[j])
            j++
        }
        console.timeEnd('while循环时间');

        /*
        * do...while 循环
        * 语法:do { 循环体 } while ( 条件 )
        * */
        console.time('do...while循环时间');
        let k = 0
        do {
            // console.log("值: ",dataList[k])
            k++
        }while (k<dataList.length)
        console.timeEnd('do...while循环时间');

        /*
        * 一般用于循环对象 和 数组会有警告
        * for...in 循环 遍历对象的属性
        * 语法:for (变量 in 对象) { 循环体 }
        * */
       /* console.time('测试for...in循环对象时间');
        for (const index in dataObj) {
            // console.log('下标:', index)
            // console.log('值:', dataList[index])
        }
        console.timeEnd('测试for...in循环对象时间');*/

        console.time('for...in循环数组时间');
        for (const index in dataList) {
            // console.log("值: ", dataList[index])
        }
        console.timeEnd('for...in循环数组时间');
        /*
        * 用于循环数组、字符串、Map、Set 等
        * for...of 循环
        * 语法:for (变量 in 可迭代对象) { 循环体 }
        * */

        console.time('for...of循环时间');
        for (const item of dataList) {
            // console.log("值: ", item)
        }
        console.timeEnd('for...of循环时间');

        /*
        * 仅用于遍历数组
        * forEach 循环 不支持 break 或 return
        * 语法:数组.forEach(function(元素, 索引, 数组) { 回调函数 }
        * */
        console.time('forEach循环时间');
        dataList.forEach((el, index, arr) => {
            // console.log("值: ", el)
        })
        console.timeEnd('forEach循环时间');
        /*
        * 仅用于遍历数组  返回一个新数组 不会修改原始数组
        * map 循环
        * 语法:const 新数组 = 数组.map(function(元素, 索引, 数组) { return 新元素; }
        * */

        console.time('map循环时间');
         dataList.map((el, index, arr) => {
             // console.log("值: ", el)
        })
        console.timeEnd('map循环时间');
        
    </script>

标签:do,console,dataList,javascript,while,循环,let,对比
From: https://www.cnblogs.com/zy-mg/p/17322671.html

相关文章

  • JS的for循环动态渲染html只有最后一个元素生效?
    背景:我想在html3个ul中动态生成5个子元素li目标效果:废话少说,代码直接梭起来~1.先写html结构<sectionclass="list-box"><ulid="myList"></ul><ulid="myListOne"></ul><ulid="myListTwo"></ul>&......
  • JavaScript运算符与表达式
    目录一、===二、||三、??与?.???.四、...五、[]{}[]{}一、===严格相等运算符,用作逻辑判断1==1 //返回true1=='1' //返回true,会先将右侧的字符串转为数字,再做比较1==='1' //返回false,类型不等,直接返回falsetypeof查看某个值的类型typeof1 //返回'number'ty......
  • JavaScript中 处理异步的几种方法
    1.回调函数回调(callback)是一个函数被作为一个参数传递到另一个函数里,在那个函数执行完后再执行。假定有两个函数f1和f2,f2等待f1的执行结果,f1()–>f2();如果f1很耗时,可以改写f1,把f2(箭头函数)写成f1的回调函数:functionf1(callback){setTimeout(()=>{letname='小明'......
  • for循环和pthread_create
    for循环是执行原语,他是一种原语逻辑,执行速度非常快,不需要内核空间和用户空间的切换pthread_create是底层是通过clone系统调用实现的,执行完成以后,需要通过mmu完成内核空间和用户空间的切换,所以比较耗时 所以:for循环比pthread_create速度快,节约时间......
  • svd,BD,ZF,SLNR,MMSE线性预编码性能对比MATLAB仿真
    1.算法仿真效果matlab2022a仿真结果如下:      2.算法涉及理论知识概要        线性预测编码(LPC)是主要用于音频信号处理与语音处理中根据线性预测模型的信息用压缩形式表示数字语音信号谱包络(en:spectralenvelope)的工具。它是最有效的语音分析技术之一......
  • javascript基础练习
     本练习根据w3cschool:https://www.w3cschool.cn/javascript/javascript-conventions.html 1.javascript简介1.1JavaScript是脚本语言JavaScript是一种轻量级的编程语言。JavaScript是可插入HTML页面的编程代码。JavaScript插入HTML页面后,可由......
  • 8.for循环的场景示例
    1.通过一个文件,进行批量创建用户   1.for循环根据文件内容进行取值   2.判断该用户是否存在,存在则提示已存在,无需创建   3.不存在则创建   4.提示创建结果    2.根据读入文件内容,进行批量创建用户,user:pass      3.批量创建用......
  • 企业文档管理系统(网盘)对比
    企业文档内容管理系统对比seafile系统高效、安全、稳定,可以控制只能在线预览。资料上传后经过分片处理,即使拷贝出去也不能访问。权限通过分享的方式,可以细粒度控制,但是和钉钉云盘一样,这样的方式呈现比较乱,没有层级关系。可道云kodbox免费版只能10人使用,类似windows的......
  • 深入理解 python 虚拟机:字节码教程(3)——深入剖析循环实现原理
    深入理解python虚拟机:字节码教程(3)——深入剖析循环实现原理在本篇文章当中主要给大家介绍cpython当中跟循环相关的字节码,这部分字节码相比起其他字节码来说相对复杂一点,通过分析这部分字节码我们对程序的执行过程将会有更加深刻的理解。循环普通for循环实现原理我们使......
  • JavaScript 邮箱 验证正则表达式 ,包看懂
    \w就是[0-9a-zA-Z_]\s是[\t\v\n\r\f]\S是[^\t\v\n\r\f]\W是[^0-9a-zA-Z_]\D就是[^0-9]\d就是[0-9].就是[^\n\r\u2028\u2029]。表示几乎任意字符。varreg=/\w{1,30}(\.\w{1,10}){0,2}@\w{1,10}\.\w{1,10}/g\w{1,30}理解为至少有一个字符,最多30个.\w{1,30}理......