当前位置: 首页 > news >正文

echarts范围限制下性能问题

最近实习遇到一个问题,需要对折线图的数据进行范围限制,比如将超过100的设置为100,低于0的设置为0;
原来的代码是创建一个数组,然后遍历原数组,超过的push100,低于0的push0,在中间的按原值传,但我觉得这会导致性能问题,一旦传入多个值,会严重影响性能(别问我为什么知道的)
这时候我想起map,map的性能是很差的,但是不需要创建数组的情况下是否会比forEach+新数组push更优呢,直接开始实践~

let arr = []
for (let i = 0; i < 5000000; i++) {arr[i] = Math.random() * 100 + 50
}
console.log('首先是map')
let mapstart;
let mapend;
mapstart = new Date().getTime()
let arr1 = arr.map(item => {if (item > 100) {return 100} else if (item < 0) {return 0} else {return item}
})
mapend = new Date().getTime()
console.log(mapend - mapstart)
console.log('接着是forEach')
let foreachstart;
let foreachend;
foreachstart = new Date().getTime()
let arr2 = []
arr.forEach(item => {if (item > 100) {arr2.push(100)} else if (item < 0) {arr2.push(0)} else {arr2.push(item)}
})
foreachend = new Date().getTime()
console.log(foreachend - foreachstart)
console.log('接着是for')
let forstart;
let forend;
forstart = new Date().getTime()
let arr3 = []
for (let i = 0; i < arr.length; i++) {if (arr[i] > 100) {arr3.push(100)} else if (arr[i] < 0) {arr3.push(0)} else {arr3.push(arr[i])}
}
forend = new Date().getTime()
console.log(forend - forstart)
console.log(arr1)
console.log(arr2)
console.log(arr3)

输出结果
低数据情况下输出时间差不多
500W数据的输出结果。。。
200:
map被完爆了,那竟然性能这么不好,为什么要用map呢?
引用了这个博主的文章

https://www.cnblogs.com/raind/p/8557120.html

他的说法是,使用map的算法更加清晰简洁。

http://www.lryc.cn/news/135952.html

相关文章:

  • wazuh环境配置以及案例复现
  • 解决el-select回显异常 显示option选项的value 而不是显示label
  • 【【STM32-SPI通信协议】】
  • 板卡常用前端 数据表操作
  • 基于AVR128单片机世界电子时钟的设计
  • Electron学习2 使用Electron-vue和Vuetify UI库
  • Java“牵手”根据商品分类ID获取速卖通商品分类详情页面数据获取方法,速卖通API实现批量商品数据抓取示例
  • QT 使用图表
  • SSRF 服务器端请求伪造
  • shell 05(shell索引数组变量)
  • 爬虫异常处理:异常捕获与容错机制设计
  • Python自动化小技巧21——实现PDF转word功能(程序制作)
  • Vue使用Element的表格Table显示树形数据,多选框全选无法选中全部节点
  • SpringBoot生成和解析二维码完整工具类分享(提供Gitee源码)
  • Redis的基本知识(偏八股)
  • react使用antd的table组件,实现点击弹窗显示对应列的内容
  • c++代码代码逻辑走查
  • CSS scoped 属性的原理
  • git 查看某个分支是从哪个分支拉出来的
  • vue helloworld.vue 点击按钮弹出 dialog,并给dialog传值
  • html动态爱心代码【三】(附源码)
  • mmseg——报错解决:RuntimeError: CUDA error: an illegal memory access was encountered
  • AWS复制EC2文件到S3,g4dn.2xlarge没有NVIDIA GPU 驱动问题
  • Go语言GIN框架安装与入门
  • 低代码系列——初步认识低代码
  • 从陌生到熟练使用string类
  • ERP规划
  • 统计学作业啊啊啊啊
  • CAM实现的流程--基于Pytorch实现
  • FL Studio2023最新版本21.1中文水果音乐编曲工具