echarts范围限制下性能问题

文章讨论了在处理折线图数据时,如何对超出范围的值进行限制。作者比较了使用map、forEach和for循环的性能,并发现map在大量数据下性能较差。虽然map代码简洁,但在处理大规模数据时应考虑其他方式以提高效率。
摘要由CSDN通过智能技术生成

最近实习遇到一个问题,需要对折线图的数据进行范围限制,比如将超过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的算法更加清晰简洁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值