js unshift性能分析
js unshift()方法可以向数组的头部添加元素并返回新的数组长度,我们手写一个unshift() 方法
Array.prototype._unshift = function () {let arr = thislet oldLen = this.lengthlet argLen = arguments.lengthlet newLen = oldLen + argLenfor (let i = oldLen - 1; i >= 0; i--) {arr[i + argLen] = arr[i]}for (let i = 0; i < argLen; i++) {arr[i] = arguments[i]}return newLen}let arr1 = [1, 3, 4, 5, 6]console.log(arr1._unshift(7, 8, 1),arr1); // 8, [7, 8, 1, 1, 3, 4, 5, 6]
从上面代码可以看出先把元素往后移动,再添加元素,对于数组长度很大的 情况下性能是比较差的。
但是我们可以先push(), 然后再reverse() ,效率更快。
咱们手写一下push和reverse做下对比
Array.prototype._push = function () {let arr = thislet len = arguments.lengthfor(let i = 0; i < len; i++) {this[this.length] = arguments[i]}return this.length}let arr = [2, 54, 65, 3, 4]
Array.prototype._reverse = function () {let arr = thislet j = arr.length - 1for(let i = 0; i < j; i++,j--) {let curLeft = arr[i]let curRight = arr[j]arr[i] = curRightarr[j] = curLeft}return arr}
可以看出reverse和push的时间复杂度要低。实际对比下
let arr = []console.time('time1')for(let i = 0 ;i< 10000; i++) {arr.unshift(i)}console.timeEnd('time1') // 平均耗时 5ms
let arr = []console.time('time2')for(let j = 0 ;j< 10000; j++) {arr.push(j)}arr.reverse()console.timeEnd('time2') // 平均耗时 0.47ms
js unshift性能分析相关推荐
- javascript php 性能,浅谈页面装载js及性能分析方法_javascript技巧
一.装载 先装载静态页面的引用js文件,然后查找引用文件中是否包含onload函数,比如main.js中包含onload函数,在main.js中查找是否有对其他js文件的引用,优先装载引用js文件,被 ...
- 网站性能分析(下)-让网站并行加载但顺序执行JS
如果网站不支持JavaScript,复杂的功能将无法正常工作.在开发当中通常有几个脚本会写在HTML文件的头部.你嵌入的越多,网站的速度潜在的变得越慢.因此提高并行加载速度变得非常有必要,在前面的文章 ...
- JS几种数组遍历方式以及性能分析对比
前言 这一篇与上一篇 JS几种变量交换方式以及性能分析对比 属于同一个系列,本文继续分析JS中几种常用的数组遍历方式以及各自的性能对比 起由 在上一次分析了JS几种常用变量交换方式以及各自性能后,觉得 ...
- Vue.js 应用性能优化,给你专业的分析+解决方案
目录 介绍 为什么我们需要 Vue JS 性能优化? Vue 性能不佳背后的主要原因 如何检查您的 VueJS 应用的大小? 如何优化 Vue js 应用程序的性能? 1. 在 Vue js 中懒加载 ...
- JS在浏览器上的性能分析(一)脚本的下载与运行
JS在浏览器上的性能分析(一)脚本的下载与运行 前言 JS在浏览器上的性能,可以认为是开发者所面临的最严重的可用性问题.JS的阻塞特性使得浏览器在执行JS代码时不能同时做其他任何事情,而大多数浏览器使 ...
- UIWebView、WKWebView使用详解及性能分析
一.整体介绍 UIWebView自iOS2就有,WKWebView从iOS8才有,毫无疑问WKWebView将逐步取代笨重的UIWebView.通过简单的测试即可发现UIWebView占用过多内存,且 ...
- DevTools 实现原理与性能分析实战
作者:vivo 互联网浏览器内核团队-Li Qingmei 一.引言 从 2008 年 Google 释放出第一版的 Chrome 后,整个 Web 开发领域仿佛被注入了一股新鲜血液,渐渐打破了 IE ...
- webuploader 怎么在react中_React 项目性能分析及优化
点击上方"前端技术砖家"关注 性能优化不是一个简单的事情,但在 95% 以上的 React 项目中,是不需要考虑的,按自己的想法奔放的使用就可以了. 我认为性能优化最好的时候是项目 ...
- 网页性能分析不完全指南
●●● 前言 经常能在博客或者论坛上看到很多有关前端性能优化的文章,但是却很少看到如何分析一个网页的性能的文章.到底什么样的指标(或者说是标准)代表这个网页性能好或者不好,通过什么方式来得到这些指标呢 ...
- 前端性能分析工具利器
作者:basinwang,腾讯 PCG 前端开发工程师 大型项目容易遇到性能问题,一般来说,当我们遇到性能瓶颈的时候,才会开始去进行相应的分析.分析的方向除了业务本身的特点相关之外,常见的还可以借助一 ...
最新文章
- Transform(CTM,Translate,Rotate,Scale)
- Bitmap 索引 vs. B-tree 索引:如何选择以及何时使用?——2-5
- 基于Elasticsearch实现搜索建议
- web网站无法启动报错
- 解决 /lib64/libc.so.6: version `GLIBC_2.15‘ not found 问题
- Ansible-playbook 拾遗
- PostgreSQL 可靠性和一致性 代码分析
- Golang并发:再也不愁选channel还是选锁
- 博士的浪漫,就是把你写进论文致谢,保存一辈子
- 专访华为杨海松:立足合作伙伴价值,构建健康HarmonyOS生态
- ftp 200 227 451linux,FTP无法链接
- python中arcsec_python – 更好的方法来计算Skyfield中两个物体的明显角度分离?
- Activiti工作流程详解
- LearnGL - 13 - PointLight - 点光源
- 前端配色方案:最舒服的十种颜色
- Java程序员从笨鸟到菜鸟之(五十七)细谈Hibernate(八)Hibernate集合Map关系映射
- python复数计算符号_Python:基本运算、基本函数(包括复数)、Math模块、NumPy模块...
- 一个int和long占多少个字节
- 在Java中12个常见的语法糖!
- Java NIO Socket编程实例
热门文章
- 5类6类7类网线对比_5类 6类 7类网线有没有什么区别
- con排插与单片机相连_单片机与8255芯片连接详解
- Qt3升至Qt4需要注意的几件事项浅谈
- Ubutntu18.04 root用户下谷歌浏览器打不开
- 人人都是首席质量官--读后感
- 字体图标和变形 transform属性的使用
- 饥饿游戏3:嘲笑鸟(下)[The Hunger Games: Mockingjay - Part 2]
- 压缩包文件的密码如何破解
- 【搜索】桐桐的运输方案
- python批量将png格式转换为jpg格式,并保存到新的文件夹