美文网首页
记一次数据性能优化

记一次数据性能优化

作者: dc的梦呓 | 来源:发表于2019-04-21 23:35 被阅读0次

最近使用同事写的代码,功能是对特定格式的数据进行解析,最终得到一些元信息和浮点数数组,最后对数据进行应用。

使用过程中发现,在数据很小的情况下,性能正常,在几十毫秒即可解析完成。但当数据很大时,数组长度100多万,解析则很慢,1个数据需6-7秒,而这要在客户端上应用,是不可接受的,并且,数据是好几十个的。

经查,性能卡在字节数组到浮点数组的转换上。原代码是每4个字节转换为浮点数,再存入数组。如此逐一转换后,在数据小的性况下没问题,当数据大时,问题就出现了。

如果可以一次性完成,则性能问题应该可以解决。c# 中有个BlockCopy,可以对数组进行一整块的转换:

float[] destDataArr = new float[sourceBytesArr.Length];
Buffer.BlockCopy(sourceByteArrs, 0, destDataArr, 0, sourceByteArr.Length);

以上字节数组sourceBytesArr 为小端(little endian)顺序;若为大端(big endian),则需要先反转下数组的顺序,Array.Reverse(sourceBytesArr),然后,对得到的结果destDataArr再反转一次即可,即 Array.Reverse(destDataArr)

最后测试,数组长度为100多万时,也只需30-40毫秒即可完成,性能提升10多倍。对于小点的数据,则是几毫秒级别的。

相关文章

  • Android性能优化(下)

    Android性能优化 内存泄漏和性能优化方式Android性能优化(上)数据库优化和网络优化Android性能优...

  • 常用的后端性能优化六种方式:缓存化+服务化+异步化等

    性能优化专题 前端性能优化 数据库性能优化 jvm和多线程优化 架构层面优化 缓存性能优化 常用的后端性能优化六大...

  • 数据库优化

    优化思路 优化上有两个主要方面:安全与性能 安全 ---> 数据可持续性 性能 ---> 数据的高性能访问 优化维...

  • 记一次数据性能优化

    最近使用同事写的代码,功能是对特定格式的数据进行解析,最终得到一些元信息和浮点数数组,最后对数据进行应用。 使用过...

  • Spark性能调优

    《Spark性能优化:开发调优篇》《Spark性能优化:资源调优篇》《Spark性能优化:数据倾斜调优》《Spar...

  • Spark性能优化:数据倾斜调优(转)

    《Spark性能优化:开发调优篇》《Spark性能优化:资源调优篇》《Spark性能优化:数据倾斜调优》《Spar...

  • Spark性能优化:开发调优篇(转)

    《Spark性能优化:开发调优篇》《Spark性能优化:资源调优篇》《Spark性能优化:数据倾斜调优》《Spar...

  • Spark性能优化:资源调优篇(转)

    《Spark性能优化:开发调优篇》《Spark性能优化:资源调优篇》《Spark性能优化:数据倾斜调优》《Spar...

  • atomic.Value代替sync.RWMutex

    记一次性能优化,读公司项目代码时候,发现好些使用sync.RWMutext的使用场景:项目启动时候对高频数据缓存到...

  • 微信小程序优化uni-app

    性能优化-渲染性能减少调用setData频次 减少调用setData数据量 自定义组件实现局部数据刷新 性能优化-...

网友评论

      本文标题:记一次数据性能优化

      本文链接:https://www.haomeiwen.com/subject/lvisgqtx.html